2017-10-19 1 views
0

Ich versuche, einige Feld einer Tabelle in eine CSV-Datei zu exportieren ... Die Abfrage, die ich verwende istMYSQL-Tabelle in CSV exportieren. Abfrage funktioniert nicht

SELECT "field1", "field1", "field3" 
UNION ALL 
SELECT * 
FROM mytable 
INTO OUTFILE "/Users/davide/Documents/file.csv" 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 

Aber mysql gibt

ERROR 1222 (21000): The used SELECT statements have a different number of columns 

Der Tisch hat 2 Felder mehr, aber ich glaube nicht, dass dies das Problem ist.

Dank

+0

Haben zwei weitere Felder ist ein Problem. Die gleiche Anzahl von Spalten in der CSV-Datei muss mit der Tabelle übereinstimmen, in die Sie importieren. – Adam

+0

Warum denken Sie nicht, dass es ein Problem ist, wenn die Tabelle 5 Spalten hat, aber Sie UNION mit einer Abfrage, die 3 Spalten hat? Dies ist ein Fehler in der Standarddefinition von UNION und in jeder SQL-Implementierung. Und genau das sagt Ihnen die Fehlermeldung. –

Antwort

0

Das Problem ist, dass, wenn Sie UNION Anweisung verwenden, müssen Sie beide SELECT Aussagen die gleiche Anzahl von Spalten

haben stellen Sie sicher,

Wenn Sie einen „leeren“ Raum benötigen zu füllen, Sie kann NULL zum Beispiel

SELECT "field1", "field1", "field3", NULL, NULL 
UNION ALL 
SELECT * 
FROM mytable 
INTO OUTFILE "/Users/davide/Documents/file.csv" 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
+0

Die Abfrage funktioniert, aber alle Felder sind in der CSV, nicht die ausgewählte nur – big

+0

Ihre zweite Auswahl hat ein '*', so dass sie alle auswählt, müssen Sie angeben, wie die Ausgabe aussehen soll, würde es helfen mit Beispieleingabe auch – Moseleyi

2

verwenden SELECT * nicht, listet die spezifischen Spalten, die Sie wollen in die CSV setzen. SELECT * bedeutet, dass alle Spalten in der Tabelle zurückgegeben werden.

SELECT "field1", "field1", "field3" 
UNION ALL 
SELECT field1, field2, field3 
FROM mytable 
INTO OUTFILE "/Users/davide/Documents/file.csv" 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'