sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #69573
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