Re: [FUG-BR] (Off-Topic) Dúvida MySQL

2007-06-04 Por tôpico Rodrigo Lorenz
On 6/4/07, Carlos Eduardo Carvalho <[EMAIL PROTECTED]> wrote:
> Pois é, a sugestão do João acho que atende. Outra opção é fazer do
> /home um link para o /usr/local, mas isso pode não te atender. Outra
> forma seria gerar um dump do mysql, substituir o texto no dump, que
> nada mais é que um arquivo texto (e aí tem inúmeras maneiras de
> substituir texto) e recarregar o dump, que em geral já tem tags SQL
> que removem e recriam os conteúdos todos. Ex (o dólar representa o
> prompt):
>
> $ mysqldump --opt suabase -u usuario -p > dump.sql
> $ sed -i "" -e 's/home/usr\/local/g' dump.sql
> $ mysql -u usuario -p suabase < dump.sql
>
> Claro: mantenha um backup antes e certifique-se de que ninguém está
> acessando a base no momento da alteração. Um backup pode até ser uma
> cópia do dump.sql
>
> Claro também que isso só dará certo assumindo-se que não há a string
> "home" em outras partes da sua base. Se tiver, pode editar o dump.sql
> antes, que tem toda a base "suabase" e deixar apenas a tabela
> necessária.
>
> Abs, Cartola.
>

Olá a todos,

Caro João e Carlos, funciounou perfeitamente. Seguindo a
dica do João fiz exatamente como ele diz na sugestão 2 e após mudar
algumas coisinhas no comando que passou, funcionou uma beleza - fiz
isso hoje.  E minutos depois leio o e-mail do Carlos que apresenta uma
solução mais simples e que me fez ficar pensando: "Porque não tive
essa idéia antes?" O comando sed é um show mesmo.

 Obrigado João e Carlos,

Rodrigo Lorenz
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] (Off-Topic) Dúvida MySQL

2007-06-04 Por tôpico Carlos Eduardo Carvalho
Pois é, a sugestão do João acho que atende. Outra opção é fazer do
/home um link para o /usr/local, mas isso pode não te atender. Outra
forma seria gerar um dump do mysql, substituir o texto no dump, que
nada mais é que um arquivo texto (e aí tem inúmeras maneiras de
substituir texto) e recarregar o dump, que em geral já tem tags SQL
que removem e recriam os conteúdos todos. Ex (o dólar representa o
prompt):

$ mysqldump --opt suabase -u usuario -p > dump.sql
$ sed -i "" -e 's/home/usr\/local/g' dump.sql
$ mysql -u usuario -p suabase < dump.sql

Claro: mantenha um backup antes e certifique-se de que ninguém está
acessando a base no momento da alteração. Um backup pode até ser uma
cópia do dump.sql

Claro também que isso só dará certo assumindo-se que não há a string
"home" em outras partes da sua base. Se tiver, pode editar o dump.sql
antes, que tem toda a base "suabase" e deixar apenas a tabela
necessária.

Abs, Cartola.

Em 01/06/07, Joao Rocha Braga Filho<[EMAIL PROTECTED]> escreveu:
> On 6/1/07, Rodrigo Lorenz <[EMAIL PROTECTED]> wrote:
> > Saudações pessoal,
> >
> > Vou fazer a atualização de um servidor de e-mail com Qmail
> > e estou usando vpopmail + mysql. Na presente instalação os
> > domínios/usuários ficam dentro de /home/vpopmail/domains, portando a
> > saída do SELECT na coluna pw_dir da tabela vpopmail fica assim por
> > exemplo:
> >
> > ++
> > | pw_dir
> >   |
> > ++
> > | /home/vpopmail/domains/testando.com.br/postmaster   |
> > | /home/vpopmail/domains/testando2.com.br/postmaster |
> > | /home/vpopmail/domains/testando.com.br/megatherion |
> > | /home/vpopmail/domains/testando2.com.br/megatherion   |
> > ++
> > 4 rows in set (0.00 sec)
> >
> > Nas ocorrências de "/home/" gostaria de substituir para "/usr/local/".
> > Para alterar apenas um registro é fácil usando os comandos UPDATE, SET
> > e WHERE, mas para alterar todos registros eu não estou conseguindo, e
> > no meu caso são mais de 5.000 registros. Se alguém puder dar uma dica
> > de como fazer eu agradeço.
> >
> > Obrigado a todos pela atenção
> >
>
> Eu sei pouco de SQL, mas a sugestão seria um programa para ler todos
> os registros, pegando este campo (só ele deve ser o suficiente), Modificando
> a string e fazendo um UPDATE.
>
> Sugestõa dois, e talvez mais fácil.
>
> Faça uma query no mysql, salvando o resultado em um arquivo (acho
> que opção tee), Depois rode o seguinte script:
>
> uniq < ARQUIVO | sort | uniq | sed 's/\(\/home\)\(.*\)/UPDATE pw_dir
> FROM VALUES (\/usr\/local\2) WHERE pw_dir = \'\1\2\';/' | mysql
> --user=... --password... banco_de_dados
>
> Nota, acima é uma linha só.
>
> PERIGO!! Não tenho certeza se toda a sintaxe acima está certa,
> então sugiro testar em uma cópia antes.
>
>
> Boa Sorte,
> João Rocha.
>
>
> > Rodrigo Lorenz
> > -
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >
>
>
> --
> "Sempre se apanha mais com as menores besteiras. Experiência própria."
>
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> http://www.goffredo.eti.br
> -
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] (Off-Topic) Dúvida MySQL

2007-06-01 Por tôpico Joao Rocha Braga Filho
On 6/1/07, Rodrigo Lorenz <[EMAIL PROTECTED]> wrote:
> Saudações pessoal,
>
> Vou fazer a atualização de um servidor de e-mail com Qmail
> e estou usando vpopmail + mysql. Na presente instalação os
> domínios/usuários ficam dentro de /home/vpopmail/domains, portando a
> saída do SELECT na coluna pw_dir da tabela vpopmail fica assim por
> exemplo:
>
> ++
> | pw_dir
>   |
> ++
> | /home/vpopmail/domains/testando.com.br/postmaster   |
> | /home/vpopmail/domains/testando2.com.br/postmaster |
> | /home/vpopmail/domains/testando.com.br/megatherion |
> | /home/vpopmail/domains/testando2.com.br/megatherion   |
> ++
> 4 rows in set (0.00 sec)
>
> Nas ocorrências de "/home/" gostaria de substituir para "/usr/local/".
> Para alterar apenas um registro é fácil usando os comandos UPDATE, SET
> e WHERE, mas para alterar todos registros eu não estou conseguindo, e
> no meu caso são mais de 5.000 registros. Se alguém puder dar uma dica
> de como fazer eu agradeço.
>
> Obrigado a todos pela atenção
>

Eu sei pouco de SQL, mas a sugestão seria um programa para ler todos
os registros, pegando este campo (só ele deve ser o suficiente), Modificando
a string e fazendo um UPDATE.

Sugestõa dois, e talvez mais fácil.

Faça uma query no mysql, salvando o resultado em um arquivo (acho
que opção tee), Depois rode o seguinte script:

uniq < ARQUIVO | sort | uniq | sed 's/\(\/home\)\(.*\)/UPDATE pw_dir
FROM VALUES (\/usr\/local\2) WHERE pw_dir = \'\1\2\';/' | mysql
--user=... --password... banco_de_dados

Nota, acima é uma linha só.

PERIGO!! Não tenho certeza se toda a sintaxe acima está certa,
então sugiro testar em uma cópia antes.


Boa Sorte,
João Rocha.


> Rodrigo Lorenz
> -
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


-- 
"Sempre se apanha mais com as menores besteiras. Experiência própria."

[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://www.goffredo.eti.br
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


[FUG-BR] (Off-Topic) Dúvida MySQL

2007-06-01 Por tôpico Rodrigo Lorenz
Saudações pessoal,

Vou fazer a atualização de um servidor de e-mail com Qmail
e estou usando vpopmail + mysql. Na presente instalação os
domínios/usuários ficam dentro de /home/vpopmail/domains, portando a
saída do SELECT na coluna pw_dir da tabela vpopmail fica assim por
exemplo:

++
| pw_dir
  |
++
| /home/vpopmail/domains/testando.com.br/postmaster   |
| /home/vpopmail/domains/testando2.com.br/postmaster |
| /home/vpopmail/domains/testando.com.br/megatherion |
| /home/vpopmail/domains/testando2.com.br/megatherion   |
++
4 rows in set (0.00 sec)

Nas ocorrências de "/home/" gostaria de substituir para "/usr/local/".
Para alterar apenas um registro é fácil usando os comandos UPDATE, SET
e WHERE, mas para alterar todos registros eu não estou conseguindo, e
no meu caso são mais de 5.000 registros. Se alguém puder dar uma dica
de como fazer eu agradeço.

Obrigado a todos pela atenção

Rodrigo Lorenz
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd