Micro-User
Grünschnabel
Hallo, da dies mein erster Beitrag in diesem Forum ist erst einmal ein freundliches "Hallo an Alle" ... 
Komme ich zu meinem Problem. Ich möchte Daten aus einer Microsoft SQL-Datenbank in eine MySQL-Datenbank synchronisieren. Der Datenaustausch soll später automatisch (täglich) durchgeführt werden. Dadurch man ja mit MSSQL nicht direkt Daten in die MySQL schreiben kann, wollte ich den Zwischenschritt über eine CSV-Datei gehen. Das Programm sollte dabei in einer Batch-Datei geschrieben werden und später über geplante Tasks ausgeführt werden.
Aufbau bisher:
Soweit funktioniert dies auch sehr gut.
Ich habe jedoch nun das Problem, wenn NULL-Werte in die MySQL-Datenbank importiert werden sollen. Er versucht nicht vorhandene Daten '' in einen Datentyp umzuwandeln und bringt einen Fehler (ist ja irgendwo auch logisch). Ich weiß auch, dass ein \N für die MySQL-Datenbank NULL ist. Jedoch wie bekomme ich nun in die aus der MSSQL-DB exporierte CSV-Datei an diesen Stellen das \N rein!? Oder gibt es noch eine andere Möglichkeit? Ich bin für alle Vorschläge offen.
Der Inhalt der CSV schaut dann beispielsweise so aus:
Artikel1 Bezeichnung1
Artikel2 Bezeichnung2
Artikel3
Artikel4 Bezeichnung4
....
Meine Idee war nun, den CSV-Export mit Field Delimitern mit dem Zeichen " zu versehen und anschließend irgendwie alle leeren Werte "" durch "\N" zu ersetzen. Nur wie funktioniert dies oder ist das garnicht möglich?
Dies müsste eigentlich den gewünschten Erfolg bringen.
Aufbau dann:
"Artikel1" "Bezeichnung1"
"Artikel2" "Bezeichnung2"
"Artikel3" ""
"Artikel4" "Bezeichnung4"
...
Ich hoffe ich hab mein Problem gut erklärt und Ihr könnt mir irgendwie dabei helfen. Wie gesagt, falls jemand einen anderen Ansatz hat, dann her damit
Schon im Voraus vielen Dank für eure Hilfe,
Gruß Micro-User

Komme ich zu meinem Problem. Ich möchte Daten aus einer Microsoft SQL-Datenbank in eine MySQL-Datenbank synchronisieren. Der Datenaustausch soll später automatisch (täglich) durchgeführt werden. Dadurch man ja mit MSSQL nicht direkt Daten in die MySQL schreiben kann, wollte ich den Zwischenschritt über eine CSV-Datei gehen. Das Programm sollte dabei in einer Batch-Datei geschrieben werden und später über geplante Tasks ausgeführt werden.
Aufbau bisher:
Code:
Export aus MSSQL:
BCP "<meinSQLStatement>" queryout <meinPfad>\export.csv -S <Server> -T -k -c -C -t "\t"
Import in MySQL:
START <meinMySQL>\mysql.exe -h localhost --user=<meinUser> --password=<meinPW> -e "LOAD DATA INFILE '<meinPfad>\export.csv' REPLACE INTO TABLE <meineDBTabelle> CHARACTER SET Latin1 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n';"
Soweit funktioniert dies auch sehr gut.
Ich habe jedoch nun das Problem, wenn NULL-Werte in die MySQL-Datenbank importiert werden sollen. Er versucht nicht vorhandene Daten '' in einen Datentyp umzuwandeln und bringt einen Fehler (ist ja irgendwo auch logisch). Ich weiß auch, dass ein \N für die MySQL-Datenbank NULL ist. Jedoch wie bekomme ich nun in die aus der MSSQL-DB exporierte CSV-Datei an diesen Stellen das \N rein!? Oder gibt es noch eine andere Möglichkeit? Ich bin für alle Vorschläge offen.
Der Inhalt der CSV schaut dann beispielsweise so aus:
Artikel1 Bezeichnung1
Artikel2 Bezeichnung2
Artikel3
Artikel4 Bezeichnung4
....
Meine Idee war nun, den CSV-Export mit Field Delimitern mit dem Zeichen " zu versehen und anschließend irgendwie alle leeren Werte "" durch "\N" zu ersetzen. Nur wie funktioniert dies oder ist das garnicht möglich?
Dies müsste eigentlich den gewünschten Erfolg bringen.
Aufbau dann:
"Artikel1" "Bezeichnung1"
"Artikel2" "Bezeichnung2"
"Artikel3" ""
"Artikel4" "Bezeichnung4"
...
Ich hoffe ich hab mein Problem gut erklärt und Ihr könnt mir irgendwie dabei helfen. Wie gesagt, falls jemand einen anderen Ansatz hat, dann her damit

Schon im Voraus vielen Dank für eure Hilfe,
Gruß Micro-User