it-swarm.com.de

MYSQL importiert Daten aus csv mit LOAD DATA INFILE

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.

87
MANJEET

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...);
135
Saharsh Shah

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;
45
ckim

Vor dem Importieren der Datei müssen Sie Folgendes vorbereiten:

  • Eine Datenbanktabelle, in die die Daten aus der Datei importiert werden.
  • Eine CSV-Datei mit Daten, die mit der Anzahl der Spalten der -Tabelle und dem Datentyp in jeder Spalte übereinstimmen.
  • Das Konto, das eine Verbindung zum MySQL-Datenbankserver herstellt, verfügt über die Berechtigungen FILE Und INSERT.

Angenommen, wir haben folgende Tabelle:

 enter image description here

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 :

 enter image description here

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

44
Sunny S.M

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;
13

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.

5
krunal panchal

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

2
Mohammad Arshi

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 !!!

0
Carlos Garcia

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.

table.sql

id //field 1

name //field2

table.txt

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'; 
0
Jorge T

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
0
Kikoz

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);
0
Hozayfa