Re: [FUG-BR] (Off-Topic) Dúvida MySQL
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
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
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
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