[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: query complicata con espressioni regolari



pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
non si se è abbastanza veloce

--------------------------------------
source config.conf

post_id=$(mysql --database="$MYDB" --user=$USER --password="$PASSWD"
-e "SELECT MAX(post_id) AS post_id FROM phpbb_posts;")

max_post_id=$(echo $post_id | sed 's|^post_id ||')
#echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

while [ $post_id = 0 ]; do

    post_username=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
post_id= $post_id;")
    post_username=$(echo $post_username | sed 's|^post_username ||')
#    echo post_username=$post_username

    post_text=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
post_id= $post_id;")
    post_text=$(echo $post_text | sed 's|^post_text ||')

    new_post_text=$(echo $post_text | sed
"s|\[quote:3pjjad9s\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]<br>||I")
#    echo $new_post_text
    mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
"UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
\"$post_id\""

    let post_id=post_id-1
done
--------------------------------------------

...che ne dite?
MaX

Il 13/02/15, MaX<maxlinux2000@gmail.com> ha scritto:
> ciao a tutti
>
> avrei un problema con le espessioni regolari dentro ad una query mysql
> inglobata a sua volta in uno script  :)
>
> chpass() {
> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
> "UPDATE phpbb_users
> SET user_password = \"$HPPASS\" WHERE username = \"$PHPBB_USER\""
> }
>
> questo sopra è un esempio che uso per modificare via script la passwd
> di un utente in phpbb.
>
> Ora peró vorrei cancellare una parte di testo dal campo "
> phpbb_posts/post_text" ma solo se dentro a questo testo appare:
> [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
> relativo campo " phpbb_posts/post_username"
>
> Praticamente c' è da cancellare la linea "[quote]Alfredo,20/7/2012,
> 19:54]" solo se nel campo  "post_username" il nome coincide con
> "Alfredo".
>
> A complicare le cose... la data di fianco è variabile, e il
> "[quote]Alfredo,20/7/2012, 19:54]"
> è sempre nella seconda linea
>
> Come se non bastasse, se nel messsaggio compare un
> "[quote]Alfredo,20/7/2012, 19:54]", ma nel "post_username" il nome è
> differente da "Alfredo", allora bisogna lasciarlo.
>
> ..e naturalmente il resto del messaggio deve rimanere inalterato.
>
> qualche idea?
>
> io stavo pensando di estrarre il post_id,post_text,post_text con una
> query, fare le comparazioni con gli strumenti della shell linux,
> togliere eventualemente il testo e poi reimmettere il testo modificato
> usando come riferimento il post_id
>
> o ci sono soluzioni migliori... e più rapide... interne a mysql?
>
> ciao
> MaX
>


-- 
ciao,
MaX


Reply to: