← Desenvolvimento

Search and Replace a toda a BD

Lida 1839 vezes

Offline

Carlos Gandra 
Administrador
Mensagens 3081 Gostos 97
Feedback +1

Troféus totais: 34
Trófeus: (Ver todos)
Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4

Olá,

Existe algum método prático para fazer um Search and Replace em todas as tabelas de uma base de dados mysql, via phpmyadmin?

Dado o tamanho da BD fazer o download, substituir com o notepad++ e depois fazer upload seria... penoso!

Obrigado :)
Offline

Nuno 
Administrador
Mensagens 7780 Gostos 216
Feedback +2

Troféus totais: 42
Trófeus: (Ver todos)
100 Poll Votes Level 7 Search Mobile User Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes

Código: [Seleccione]
UPDATE tablename SET tablefield = replace(tablefield,"findstring","replacestring");
Offline

Carlos Gandra 
Administrador
Mensagens 3081 Gostos 97
Feedback +1

Troféus totais: 34
Trófeus: (Ver todos)
Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4

Sim esse faz tabela a tabela, a minha dúvida era se existia algum para fazer todas as tabelas de uma vez só.

De qualquer forma acabei por fazer isso uma a uma e já está tudo ;)

Obrigado.
Offline

betanalista 
Membro
Mensagens 2564 Gostos 0
Feedback +18

Troféus totais: 26
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Sim esse faz tabela a tabela, a minha dúvida era se existia algum para fazer todas as tabelas de uma vez só.

De qualquer forma acabei por fazer isso uma a uma e já está tudo ;)

Obrigado.


sacas a base de dados, abres com notepad++ alteras e importas a base de dados
Offline

diogoosorio 
Membro
Mensagens 134 Gostos 1
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Já vim tarde, mas fica para referência futura:

Código: (php) [Seleccione]
<?php
$dbHost 
'localhost';
$dbUser 'teste';
$dbPass '123456';
$dbName 'tabela';

$con mysql_connect($dbHost$dbUser$dbPass) or die(mysql_error());
$query mysql_list_tables($dbName) or die(mysql_error());
mysql_select_db($dbName) or die(mysql_error());

while(
$table mysql_fetch_row($query)){
$sql "UPDATE {$table[0]} SET tablefield = replace(tablefield, 'find', 'replace')";
$qry = @mysql_query($sql);

if(!$qry){
$erros[]['tabela'] = $table[0];
$erros[]['erro'] = mysql_error();
}
}

if(isset(
$erros)){
echo 'Tarefa concluida, no entanto houveram alguns erros:<br /><br />';

foreach($erros as $erro)
echo $erro['tabela'] . ': ' $erro['erro'] . '<br />';
}
Offline

Carlos Gandra 
Administrador
Mensagens 3081 Gostos 97
Feedback +1

Troféus totais: 34
Trófeus: (Ver todos)
Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4

sacas a base de dados, abres com notepad++ alteras e importas a base de dados

Já tinha falado nisso:

Dado o tamanho da BD fazer o download, substituir com o notepad++ e depois fazer upload seria... penoso!

@diogoosorio obrigado, já guardei caso venha a precisar :)
Offline

kaydara 
Membro
Mensagens 616 Gostos 1
Feedback +1

Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 500 Posts 100 Posts

se tiverem acesso ssh um simples sed resolve o tamanho do ficheiro.

sed -i 's/OLD STRING/NEW STRING/g' ficheiro.sql

done :P