PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : daten von sqlserver 2000 nach mysql



tenim
15.07.02, 16:23
hallo

ich hab schon ewig probiert eine datenbank von sql server 2000 nach mysql zu übertragen. zuerst hab ich die exportfunktion von sql-server 2000 benutzt-geht natürlich nicht. dann von sql-server nach access und von da nach mysql-auch nichts. dann verschiedene tools ausprobiert die entweder auch nicht liefen (mssql-to-mysql) und sqlporter (sehr gut aber nur shareware und macht nur 10 tabellen). wie kann ich möglichst einfach eine datenbank nach mysql transferieren ohne teuer tools oder manuelles nachbearbeiten?

hoffe einer hat das schon hingekriegt.

elrond
15.07.02, 16:30
ich arbeite mit einem MS-SQL97 Server... bei dem habe ich die Möglichkeit mittels den "Data Transfomation Service" daten auf ein Samba-Share meiner Linux-Kiste zu exportieren. Die Dateien lese ich dann mit einem Perl-Script in meine Mysql-DB ein. Wenn du allerdings eine gesamte Datenbank transferieren willst, wirdt du wohl um ein wenig Programmierung nicht herumkommen. So könntest Du Dir z.B. ein Win-Prog schreiben, dass dir zu einer MS-Datenbank ein mysqldump-file erzeugt. Sollte nicht so schwierig sein ;)

Wie umfangreich ist denn deine DB?

tenim
15.07.02, 19:31
die datenbank hat ungefär 40 tabellen und so 200000 datensätze.
ich arbeite selbst nicht damit will aber die db nach mysql portieren um einem windows-"fan" mal mysql und seine fähigkeiten vorzuführen. wenn ich programmieren muss würd ich es gern mit php über odbc machen. mit perl will ich deswegen nicht unbedingt anfangen.

mfg

tenim;)

Jinto
15.07.02, 19:39
Da du also Programmieren (PHP) kannst, wo ist das Problem?
Zwei simple Lösungsmöglichkeiten (Version 2 ist IMHO einfacher)

1.
Mittels ODBC lesend auf den SQL-Server zugreifen, und die Daten mittels ODBC nach MySQL schreiben. Vielleicht zu trivial?

2.
Andere Möglichkeit wenn auch noch Access vorhanden ist, die Tabllen (vom SQL-Server und MySQL-Tabellen) mittels ODBC einbinden und mittels SQL Statement von einer Tabelle in die andere umkopieren

Einfachere Möglichkeiten fallen mir auf die schnelle nicht ein.

HTH

elrond
16.07.02, 08:20
hi,
ich habe hier ein stück sql script, dass alle tabellen aus der mssql-db auf die festplatte scchreibt:
*****script start *************************************************
declare @exec_str varchar(255),
@db varchar(50),
@tab varchar(50),
@path varchar(50),
@server varchar(50),
@user varchar(20),
@pw varchar(20)

select @db ="<db name>",
@path ="<output path>", -- letztes \ nicht vergessen !
@server ="<mssql-server>",
@user ="<db user>", --mglst sa, der darf auf jeden fall auf die Tabellen zugreifen und auch master..xp_cmdshell ausführen
@pw ="<db user password>"

select name,0 status into #bcp from sysobjects where type="U"


while exists (select * from #bcp where status=0)
begin
select @tab=min(name) from #bcp where status=0
select @exec_str="master..xp_cmdshell 'bcp "+@db+".."+@tab+" out "+@path+@tab+".bcp /S"+@server+" /U"+@user+" /P"+@pw+" -c /t; /r\n'"
exec( @exec_str)
update #bcp set status=1 where name=@tab
end
**script end ************************************

ich hab's bei mir gestestet, es funxt. Du brauchst nur das obige script in den sg. "Query Analyzer" zu kopieren die variabeln an den stellen <> richtig zu belegen und los gehts.

Die dann entstandenen kannst du leicht mittels php einlesen. Allerdings ist die frage des Tabellenanlegens noch nicht geklärt... ich denke noch ein wenig darüber nach.

elrond
18.07.02, 07:04
hast du's aufgegeben ?? :eek:

tenim
19.07.02, 09:21
nein, aber hab vor lauter arbeit ganz vergessen ins forum zu schauen.
Es laufen gerade andere projekte in meiner firma, aber das exportieren kommt demnächst auf jeden fall. ich machs wahrscheinlich mit c# und einer windows-.exe. hab mich gerade in .net eingearbeitet (nicht freiwillig-chef wollte es) und da arbeite ich auch mit c#. jetzt soll ich ein tool zum checken von inkonsistenzen zwischen 2 datenbanken (mssql,access,myscl-in allen varianten) schreiben und da binde ich die exportfunktion auch gleich mit ein. danke auf jeden fall für eure hilfe.


tenim