Avatar billede Swift Praktikant
18. oktober 2005 - 08:32 Der er 1 kommentar og
1 løsning

Hvorda ændres hundredevis af SQL sætninger fra MSSQL til MySQL

Jeg står overfor at skulle have hundredevis af scripts(Perl), der anvender MSSQL til at kunne fungere med MySQL.

Jeg bruger primært SELECT, INSERT og UPDATE. Altså ikke så mange andre finurlige funktioner.

Det største problem er jo forskel på de specialtegn der bruges omkring tabel navne m.v. i SQL udtryk.
FX:
MSSQL: SELECT [felt med langt navn] FROM [tabel med langt navn]
MySQL: SELECT `felt med langt navn` FROM `tabel med langt navn`

Jeg vil egentlig høre om man kan få værktøjer til at være bindeled, så alle scripts ikke skal ændres.

Eller skal man ud i noget regex ala:
$sql =~ s/\[(.*?)]/`$1`/g;

Man kan selvfølgelig også køre alt regex på run-time tidspunktet, men jeg ser jo hurtigt problemer med dette udtryk:
SELECT felt1 FROM [tabel med langt navn] WHERE felt1 LIKE '%Nisser har en [nissehue] på!%'
Det bliver jo så til:
SELECT felt1 FROM [tabel med langt navn] WHERE felt1 LIKE '%Nisser har en `nissehue` på!%'
Og, det er jo IKKE det jeg ville søge efter...!

Eller kan man evt. indstille MySQL til at bruge nogle anderledes felt-markerings tegn end den plejer?
Avatar billede arne_v Ekspert
18. oktober 2005 - 18:26 #1
Du skal formentlig have alle SQL sætninger checket alligevel, så omdøb tabellerne
til pæne navne uden mellemrum i databasen og ret scriptene fra en ende af
mens du går dem igennem
Avatar billede Swift Praktikant
26. oktober 2005 - 15:15 #2
Egentlig vil jeg gerne arbejde hen imod nogle perl moduler der skal kunne køre på både MySQL og MSSQL.

Jeg har fundet ud af at MySQL kan indstilles til "MSSQL mode", så syntax m.v. kommer tættere på MSSQL.

Og SQL sætningerne kan ændres så [] ændres til "", som er gyldigt i både MSSQL og MySQL(med MSSQL mode sat)

SELECT @@IDENTITY virker også på begge databaser.

Lige nu bikser jeg lidt med unicode formateringen: Det virker fint i MSSQL, men er ikke 100% iorden på MySQL. Det er som om at N'min streng med specialtegn' syntaxen ikke fungerer helt som den skal.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester