2016-07-13 3 views
1

Ich habe eine CSV-Datei, die ich in meine Datenbank importieren möchte. Die Spalten in der CSV-Datei stimmen jedoch nicht mit den Spalten in der Tabelle überein, in die ich sie importieren möchte. Ich möchte zwei Dinge tun:Importieren einer anderen Tabelle in eine Datenbank und Hinzufügen von Feldern

  1. Import der Tabelle aber nur einige der Spalten
  2. Standardwerte für Spalten bereitzustellen, die in der Tabelle I nicht habe ich importieren.

Ich hoffe, ich habe das gut genug erklärt. Ich bin mir nicht sicher, wie ich irgendeinen "Code" für diese Frage hinzufügen kann, aber ich habe ein paar Bilder eingefügt.

Hier ist meine vorhandene Tabelle:

Columns in existing table

Hier sind die Spalten für die CSV-Datei Ich wünsche

enter image description here

Ich mag irgendwie nur auf den Namen importieren würde importieren (als Titel), slug und created_at, updated_at für diese CSV-Datei in meine Tabelle. Außerdem möchte ich, dass die ID automatisch hinzugefügt wird und die Boolesche 'exam_id' und 'popular' standardmäßig auf 0 gesetzt werden.

Antwort

0

LOAD DATA INFILE ist, was Sie brauchen.

Lesen Sie sorgfältig dies: http://dev.mysql.com/doc/refman/5.7/en/load-data.html.

Der interessanteste Teil ist für Sie:

standardmäßig, wenn keine Spaltenliste am Ende der Anweisung LOAD DATA INFILE zur Verfügung gestellt wird, werden Eingangsleitungen erwartet ein Feld für jede Tabelle enthalten Säule. Wenn Sie nur einige Spalten einer Tabelle an laden möchten, geben Sie eine Spaltenliste:

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata 
(col1,col2,...); 

Sie müssen auch eine Spaltenliste angeben, ob die Reihenfolge der Felder in der Eingabedatei von der unterscheidet Reihenfolge der Spalten in der Tabelle. Sonst kann MySQL nicht sagen, wie Eingabefelder mit Tabelle Spalten übereinstimmen.

Die Spaltenliste kann entweder Spaltennamen oder Benutzervariablen enthalten. Mit Benutzervariablen ermöglicht die SET-Klausel die Ausführung von Transformationen für ihre Werte, bevor das Ergebnis Spalten zugewiesen wird.

Benutzervariablen in der SET-Klausel können auf verschiedene Arten verwendet werden. Das folgende Beispiel verwendet die erste Eingabespalte direkt für den Wert von t1.column1 und weist die zweite Eingabespalte einer Benutzervariablen zu, die einer Divisionsoperation unterzogen wird, bevor sie für den -Wert von t1 verwendet wird.column2:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET 
column2 = @var1/100; 

Die Klausel SET verwendet werden können Werte liefern nicht von der Eingangs Datei abgeleitet. Die folgende Anweisung setzt column3 das aktuelle Datum und Zeit:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, column2) SET 
column3 = CURRENT_TIMESTAMP; 

Sie können auch durch die Zuordnung es zu einer Benutzervariablen und nicht die Zuordnung der Variablen zu einer Tabellenspalte eines Eingabewert verwerfen:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @dummy, 
column2, @dummy, column3); 
Verwandte Themen