Avatar billede donkazz Nybegynder
04. oktober 2006 - 14:07 Der er 16 kommentarer og
2 løsninger

Eksport database fra MySQL til MS SQL

Hej!

Jeg står med et lidt irriterende problem. Jeg har en database på en MySQL 5.0 server som jeg skal have flyttet over på en MS SQL  server. Jeg aner bare ikke hvordan. :-|
Jeg har søgt på nettet men jeg har intet brugbart fundet..

Er der nogen af jer der har nogle gyldne tips?

Mvh.
Kasper
Avatar billede beef12 Nybegynder
04. oktober 2006 - 14:32 #1
Vil du bare migrere data?
I så fald prøv evt. http://mssql-mysql-converter.softguru.qarchive.org/
Avatar billede ffsoft Praktikant
04. oktober 2006 - 14:33 #2
Når du laver et dump fra en mySQL får du en række tekstfiler
der indeholder SQL udtryk til at oprette tabeller og indsætte
de eksisterende data fra DBen.
Problemet er bare at SQL syntaksen er forskellig i mySQL og MSSQL.

Hvis jeg skulle gøre sådan noget ville jeg lure hvordan tabellerne
var opbygget i mySQL og så lave det manuelt i MSSQL.
Så ville jeg eksportere data ud i .csv filer og importere dem ind
først i Excel og så i MSSQL.

Afhængig af antallet af tabeller og mængden af data, kan det godt
blive noget tidskrævende.
Avatar billede donkazz Nybegynder
04. oktober 2006 - 14:38 #3
Advarsel, stupid question coming up: Hvad er migrere? :-D

Min database indeholder ca 240075 poster fordelt på 3 tabeller..

Jeg er ligeglad med tiden det tager, for mig er det bare vigtigst at få dataene over helst helt uden tab eller fejl. Om det så tager 2 dage med Excel metoden, vil jeg hellere det end at skulle skynde mig og ødelægge det hele. :)
Avatar billede coderdk Praktikant
04. oktober 2006 - 15:13 #4
Har du shell-adgang? For så er der mysqldump - den kan nok hvad du vil... Den kan eksportere det som create/insert, kommaseparerede filer eller XML :)
Avatar billede donkazz Nybegynder
04. oktober 2006 - 15:23 #5
Jeg skulle mene jeg har shell-adgang. Jeg har i hvert fald direkte adgang som admin til begge servere..

Problemet med at eksportere som kommaseparerede filer er dog det at visse af felterne i databasen sagtens kunne indholde kommaer, og hvad gør man så? :-o

Jeg har prøvet at eksportere fra MySQL til kommasep fil nu og så prøvet at importere det i Excel, men Excel kan ikke importere mere end 65000 rækker pr ark, og det er helt åndssvagt at ville fortsætte importeringen i et nyt ark - Det spiller ikke.. :(
Avatar billede coderdk Praktikant
04. oktober 2006 - 15:33 #6
Jeg vil foreslå:

mysqldump --xml databasenavn > databasenavn.xml

Det kan MS SQL godt importere :)
Mht. kommaseparerede filer, så escaper den jo nok de seperatorer du vælger...
Avatar billede donkazz Nybegynder
04. oktober 2006 - 15:43 #7
Hvis jeg skriver det der i MySQL Command Line Client hopper den bare en linje ned og laver en "->"  ?

Jeg skal have det skåret ud i pap hvis jeg gør det forkert, for hvis jeg fucker det op kan I se mit hoved på toppen af rådhustårnet i morgen. :)
Avatar billede coderdk Praktikant
04. oktober 2006 - 18:03 #8
Nej, det er et separat program :) Ligesom mysql command line client ;)
Avatar billede donkazz Nybegynder
05. oktober 2006 - 14:31 #9
Hvor siger du jeg kan få fat i det henne? :)
Avatar billede coderdk Praktikant
05. oktober 2006 - 23:38 #10
Ligesom du bruger "mysql" som command line interface til mysql findes der en "mysqldump" som tilgås på samme måde - eller kan den ikke finde den?
Avatar billede donkazz Nybegynder
06. oktober 2006 - 15:23 #11
Aah jeg fandt den... Hvordan siger du jeg importerer den i SQL Management Studio 2005? Jeg synes ikke umiddelbart ikke jeg kan finde noget med importering af XML.. :)
Avatar billede coderdk Praktikant
06. oktober 2006 - 19:00 #12
SQL Server 2005 Import/Export Wizard :) Måske kan du bruge denne:

http://www.databasejournal.com/features/mssql/article.php/3580216

Jeg har ikke lige en SQL Server 2000 kan det via DTS (jeg er MCP ;)) - så jeg er 100% sikker på at SQL Server 2005 kan! :-)
Avatar billede donkazz Nybegynder
07. oktober 2006 - 13:06 #13
Det er også Wizard'en jeg bruger, men der er ingen åbenlyse steder man kan vælge XML fil.. Så jeg tvivler lidt på at den kan.. :-|
Avatar billede coderdk Praktikant
07. oktober 2006 - 15:46 #14
Weird! Du skal nok bruge Data Transformation Services (DTS) - Men hvis du ikke lige kan finde det, så kan du nok nøjes med at lade mysqldump lave en complete create/insert export eller en CSV (komma/semikolon-separeret fil med " som string-adskillere) - den kan den da godt importere... :)
Avatar billede ffsoft Praktikant
07. oktober 2006 - 15:49 #15
En komma separet fil er ikke nødvendigvis en fil hvor felterne er separeret
af komma. ;0)
Det er faktisk mere almindeligt at der er semikolon ;

Navn;Timer;osv
"Allan";"6,5";"osv
"Bent";"12,25";"osv

så derfor er det ikke noget problem hvis der er komma i data
de er pakket ind i "gåseøjne". Den MSSQL jeg har vil ikke importere
XML, men det er osse en ældre version.

Du behøver ikke at have samtlige poster i Excel, det er kun en kontrol
af at data ikke er blevet korrupte.
Avatar billede donkazz Nybegynder
17. oktober 2006 - 14:09 #16
Så fandt jeg endeligt en løsning. Jeg eksporterer databasen fra MySQL som kommasepareret med "," som kolonne adskiller og med field names i første række. Så bruger jeg Import/Export Wizard (kanon artikel coderdk, tak!) og importerer til min MS SQL database, på tabeller jeg allerede har oprettet i forvejen.

Der skulle lidt tweaking til for at få det til at virke, men endeligt har jeg løsningen på mit problem. Hvis I lige smider et par svar, ffsoft og coderdk, så kaster jeg nogle point jeres vej.

Tak for hjælpen begge to!
Avatar billede coderdk Praktikant
17. oktober 2006 - 14:19 #17
Yessir. Det var så lidt :)
Avatar billede ffsoft Praktikant
17. oktober 2006 - 15:06 #18
Kast du bare. :0)
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