Ich importiere einige Daten von 20000 Zeilen aus einer CSV-Datei in Mysql.
Die Spalten in der CSV befinden sich in einer anderen Reihenfolge als die Spalten der MySQL-Tabelle. Wie werden Spalten automatisch zugeordnet, die Mysql-Tabellenspalten entsprechen?
Wenn ich ausführen
LOAD DATA INFILE'abc.csv' INTO TABLE abc
diese Abfrage fügt alle Daten der ersten Spalte hinzu.
Bitte schlagen Sie eine automatische Syntax für den Import von Daten in MySQL vor.
Mit dem Befehl LOAD DATA INFILE können Sie die Datei csv in die Tabelle importieren.
Überprüfen Sie diesen Link MySQL - LOAD DATA INFILE .
LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
Sie müssen wahrscheinlich den FIELDS TERMINATED BY ','
oder was auch immer das Trennzeichen sein soll, einstellen.
Für eine CSV-Datei sollte Ihre Anweisung folgendermaßen aussehen:
LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
Vor dem Importieren der Datei müssen Sie Folgendes vorbereiten:
Angenommen, wir haben folgende Tabelle:
ERSTELLEN TABELLE MIT FOLGENDER FRAGE:
CREATE TABLE IF NOT EXISTS `survey` (
`projectId` bigint(20) NOT NULL,
`surveyId` bigint(20) NOT NULL,
`views` bigint(20) NOT NULL,
`dateTime` datetime NOT NULL
);
IHR CSV-DATEI MUSS FÜR DAS BEISPIEL BESTIMMT FORMATIERT WERDEN. ANGEHÄNGTES BILD :
Wenn alles in Ordnung ist .. Bitte führen Sie die folgende Abfrage aus, um DATA DATA FROM CSV FILE zu laden:
HINWEIS: Bitte geben Sie den absoluten Pfad Ihrer CSV-Datei an
LOAD DATA INFILE '/var/www/csv/data.csv'
INTO TABLE survey
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
Wenn alles getan hat. Sie haben erfolgreich Daten aus CSV in die Tabelle exportiert
Syntax:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name' INTO TABLE `tbl_name`
CHARACTER SET [CHARACTER SET charset_name]
FIELDS [{FIELDS | COLUMNS}[TERMINATED BY 'string']]
[LINES[TERMINATED BY 'string']]
[IGNORE number {LINES | ROWS}]
Siehe dieses Beispiel:
LOAD DATA LOCAL INFILE
'E:\\wamp\\tmp\\customer.csv' INTO TABLE `customer`
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
Füge mehr als 7000000 Datensätze in 1 Minute in die Datenbank ein (superschnelle Abfrage mit Berechnung)
mysqli_query($cons, '
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE tablename
FIELDS TERMINATED by \',\'
LINES TERMINATED BY \'\n\'
IGNORE 1 LINES
(isbn10,isbn13,price,discount,free_stock,report,report_date)
SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))),
RRP_nl = RRP * 1.44 + 8,
RRP_bl = RRP * 1.44 + 8,
ID = NULL
')or die(mysqli_error());
$affected = (int) (mysqli_affected_rows($cons))-1;
$log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.');
RRP und RRP_nl und RRP_bl ist nicht in csv, aber wir berechnen das und nach dem Einfügen.
nehmen wir an, Sie verwenden xampp und phpmyadmin
sie haben den Dateinamen 'ratings.txt', den Tabellennamen 'ratings' und den Datenbanknamen 'movies'.
wenn dein xampp in "C:\xampp \" installiert ist
kopieren Sie Ihre Datei "ratings.txt" in den Ordner "C:\xampp\mysql\data\movies"
LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
Ich hoffe, dies kann Ihnen helfen, Ihren Fehler auszulassen, wenn Sie dies bei localhost tun
Ich habe den Fehlercode 1290 erhalten. Der MySQL-Server wird mit der Option --secure-file-priv Ausgeführt, sodass er diese Anweisung nicht ausführen kann
Dies funktionierte für mich unter Windows 8.1 64 Bit unter Verwendung von Wampserver 3.0.6 64 Bit.
Meine.ini-Datei wurde unter C:\wamp64\bin\mysql\mysql5.7.14 bearbeitet
Lösche den Eintrag secure_file_priv c:\wamp64\tmp\(oder was auch immer du hier hast)
Ich habe alles aufgehört - wassern lassen usw. - und alles neu gestartet; punt dann meine cvs-Datei auf C:\wamp64\bin\mysql\mysql5.7.14\data\u242349266_recur (das letzte Verzeichnis ist mein Datenbankname)
ausgeführt LOAD DATA INFILE 'myfile.csv'
INTOABLE Alumnos
FELDER BEENDET DURCH ','
UMSCHLOSSEN '"'
LINIEN BEENDET DURCH '\ r\n'
IGNORE 1 LINES
... und VOILA !!!
Sie können Daten aus einer CSV- oder Textdatei laden. Wenn Sie eine Textdatei mit Datensätzen aus einer Tabelle haben, können Sie diese Datensätze in die Tabelle laden. Wenn beispielsweise eine Textdatei vorhanden ist, in der jede Zeile steht Ist ein Datensatz mit den Werten für jede Spalte. Sie können die Datensätze auf diese Weise laden.
id //field 1
name //field2
1,peter
2,daniel
...
- Beispiel an Fenstern
LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt'
INTO TABLE Table
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
Wenn Sie LOAD DATA LOCAL INFILE
von der Windows-Shell aus ausführen und OPTIONALLY ENCLOSED BY '"'
verwenden müssen, müssen Sie Folgendes tun, um die Zeichen richtig zu schützen:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out
Sie können versuchen, so einzufügen:
LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);