← Back to team overview

sslug-teknik team mailing list archive

Re: streng substitution i mysqldatabase

 

Atte André Jensen <atte@xxxxxxxxxxxxxx> wrote:
> Jeg har en database hvor jeg gerne vil ha' substitueret alle forekomster 
>  af '\\' (to backslashes) med '\' (en backslash). Hvordan gør man det? 
> Hvis der er nemmere vil det være ok at se det på en enkelt søjle i en 
> tabel, da det 99.99% sikkert kun er der det er nødvendigt...
Lav et script der henter alle data ud, kører en regexp ala s/\\\\/\\/g;
på hver streng også lægger dem tilbage igen.

Jeg er ikke helt sikker på nendestående script -- jeg kender ikke DBI
særligt odt, så jeg ved faktisk ikke om den escaper for dig, hvis det
ikke er tilfældet skal du nemlig bare fjerne de 2 regexp linjer.


#/usr/bin/perl
use DBI;
$dsn= "DBI:mysql:database=skrivdbher;host=localhost";
$dbh = $DBI->connect($dsn,"root","password");
$query = $dbh->prepare("SELECT id, foo, bar FROM table");
$query->execute();
while (@row = $query->fetchrow_array() ) {
	$row[1] =~ s/\\\\/\\/g; 
	$row[2] =~ s/\\\\/\\/g;
	$insert = $dbh->prepare("UPDATE table SET
foo='".@row[1]."',bar='".$row[2]."' where id='".$row[0]."'");
	$insert->execute();
}



--
Ask Holme
Life is just another weird dream, full of shadows, mysteries and a false feeling of happyness


References