wake-up-neo.net

So importieren Sie Daten aus einer Textdatei in die MySQL-Datenbank

Ich habe eine 350MB-Datei mit dem Namen text_file.txt, die diese tabulatorgetrennten Daten enthält:

345868230   1646198120  1531283146  Keyword_1531283146  1.55    252910000
745345566   1646198120  1539847239  another_1531276364  2.75    987831000
...

MySQL-Datenbankname: Xml_Date

Datenbanktabelle: PerformanceReport

Ich habe die Tabelle bereits mit allen Zielfeldern erstellt.

Ich möchte diese Textdatei-Daten in MySQL importieren. Ich googelte und fand einige Befehle wie LOAD DATA INFILE und ziemlich verwirrt, wie man es benutzt.

Wie kann ich diese Textdatei importieren?

Es sollte so einfach sein wie ...

LOAD DATA INFILE '/tmp/mydata.txt' INTO TABLE PerformanceReport;

Standardmäßig verwendet LOAD DATA INFILE ein Tabulatorzeichen (eine Zeile pro Zeile) und sollte daher in Ordnung sein.

59
Omnikrys

Exemplarische Vorgehensweise zur Verwendung des MySQL-Befehls LOAD DATA:

  1. Erstellen Sie Ihren Tisch: 

    CREATE TABLE foo(myid INT, mymessage VARCHAR(255), mydecimal DECIMAL(8,4));
    
  2. Erstellen Sie eine durch Tabulatoren getrennte Datei (beachten Sie, dass sich zwischen den Spalten Tabulatoren befinden):

    1   Heart disease kills     1.2
    2   one out of every two    2.3
    3   people in America.      4.5
    
  3. Verwenden Sie den Befehl zum Laden von Daten:

    LOAD DATA LOCAL INFILE '/tmp/foo.txt' 
    INTO TABLE foo COLUMNS TERMINATED BY '\t';
    

    Wenn Sie eine Warnung erhalten, dass dieser Befehl nicht ausgeführt werden kann, müssen Sie den hier beschriebenen --local-infile=1-Parameter aktivieren: Wie korrigiere ich den MySQL-Ladefehler

  4. Die Zeilen werden eingefügt:

    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
    
  5. Überprüfen Sie, ob es funktioniert hat:

    mysql> select * from foo;
    +------+----------------------+-----------+
    | myid | mymessage            | mydecimal |
    +------+----------------------+-----------+
    |    1 | Heart disease kills  |    1.2000 |
    |    2 | one out of every two |    2.3000 |
    |    3 | people in America.   |    4.5000 |
    +------+----------------------+-----------+
    3 rows in set (0.00 sec)
    

So legen Sie fest, in welche Spalten Ihre Textdateispalten geladen werden sollen:

So was: 

LOAD DATA LOCAL INFILE '/tmp/foo.txt' INTO TABLE foo
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
(@col1,@col2,@col3) set [email protected],[email protected];

Der Inhalt der Datei wird in die Variablen @ col1, @ col2, @ col3 eingefügt. myid erhält Spalte 1 und mydecimal erhält Spalte 3. Wenn dies ausgeführt würde, würde die zweite Zeile wegfallen:

mysql> select * from foo;
+------+-----------+-----------+
| myid | mymessage | mydecimal |
+------+-----------+-----------+
|    1 | NULL      |    1.2000 |
|    2 | NULL      |    2.3000 |
|    3 | NULL      |    4.5000 |
+------+-----------+-----------+
3 rows in set (0.00 sec)
44
Eric Leschinski

Wenn Ihre Tabelle durch andere als durch Tabulatoren getrennt ist, sollten Sie sie wie folgt angeben:.

LOAD DATA LOCAL 
    INFILE '/tmp/mydata.txt' INTO TABLE PerformanceReport 
    COLUMNS TERMINATED BY '\t'  ## This should be your delimiter
    OPTIONALLY ENCLOSED BY '"'; ## ...and if text is enclosed, specify here
13
peixe

Die LOAD DATA INFILE-Anweisung liest Zeilen aus einer Textdatei mit sehr hoher Geschwindigkeit in eine Tabelle.

LOAD DATA INFILE '/tmp/test.txt' 
INTO TABLE test
FIELDS TERMINATED BY ','
LINES STARTING BY 'xxx';

Wenn die Datendatei so aussieht:

xxx"abc",1
something xxx"def",2
"ghi",3

Die resultierenden Zeilen sind ("abc", 1) und ("def", 2). Die dritte Zeile in der Datei wird übersprungen, da sie kein Präfix enthält.

LOAD DATA INFILE 'data.txt'
INTO TABLE tbl_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'

Sie können Datendateien auch mit dem Dienstprogramm mysqlimport laden. Es sendet eine LOAD DATA INFILE-Anweisung an den Server

mysqlimport -u root -ptmppassword --local test employee.txt

test.employee: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
3
priya gupta

1. wenn es sich um eine tabulatorgetrennte txt-Datei handelt:  

LOAD DATA LOCAL INFILE 'D: /MySQL/event.txt' INTO TABLE-Ereignis

LINIEN BEENDET DURCH '\ r\n';

2. sonst:  

LOAD DATA LOCAL INFILE 'D: /MySQL/event.txt' INTO TABLE-Ereignis

FELDER BEENDET DURCH 'x' (hier könnte x Komma ',', Tab '\ t', Semikolon ';', Leerzeichen '' sein)

LINIEN BEENDET DURCH '\ r\n';

0
Shu Zhang

Sie sollten die Option einstellen:

local-infile=1

in Ihren [mysql] -Eintrag der my.cnf-Datei oder rufen Sie den mysql-Client mit der Option --local-infile auf:

mysql --local-infile -uroot -pyourpwd yourdbname

Sie müssen sicherstellen, dass derselbe Parameter auch in Ihrem Abschnitt [mysqld] definiert ist, um die Feature-Server-Seite "Local Infile" zu aktivieren.

Es ist eine Sicherheitsbeschränkung.

LOAD DATA LOCAL INFILE '/softwares/data/data.csv' INTO TABLE tableName;
0
LOAD DATA INFILE '/home/userlap/data2/worldcitiespop.txt' INTO TABLE cc FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
  • IGNORE 1 LINES, um eine erste Kopfzeile mit Spaltennamen zu überspringen
  • FIELDS TERMINATED BY ',' liest die durch Kommas getrennte Datei
  • Wenn Sie die Textdatei auf einem Windows-System erstellt haben, müssen Sie möglicherweise LINES TERMINATED BY '\ r\n' verwenden, um die Datei ordnungsgemäß zu lesen, da Windows-Programme normalerweise zwei Zeichen als Zeilenabschlusszeichen verwenden. Einige Programme, z. B. WordPad, verwenden möglicherweise\r als Zeilenabschlusszeichen beim Schreiben von Dateien. Um solche Dateien zu lesen, verwenden Sie LINES TERMINATED BY '\ r'. 
0
Amitesh