Despre încărcarea unor date uriașe în tabel folosind comanda de încărcare infinit

Am probleme cu încărcarea unui fișier txt separat prin virgulă într-un tabel. Dosarul este uriaș. Dimensiunea sa este 2 GB și conține rânduri 65 coloane și 34 Lac . Am făcut următoarele setări pentru încărcarea acestui fișier:

  • interogare-LOAD DATA LOCAL INFILE numele fișierului INTO TABLE nume de tabel DOMENII terminate cu ',' încorporate de '' 'LINII terminate de' \ r \ n 'IGNORE 1 LINES;

Și în fișierul my.ini am adăugat următoarele variabile

  • [mysqld] max_allowed_packet = 60M
  • [myisamchk] key_buffer_size = 512M myisam_max_sort_file_size = 3G

Sunt nou la mysql. Poate cineva să mă ajute să încărc acest fișier. Când alerg deasupra interogării, am obținut rezultatul de 4-5 ori.

Query OK,0 rows affected(25.09 sec)
Records:0 Deleted:0 Skipped:0 Warnings:0
0

4 răspunsuri

Încercați să nu folosiți cuvântul cheie LOCAL, Dacă aceasta nu rezolvă problema dvs., postați câteva prime linii ale fișierului text pentru a vedea dacă toate liniile sunt ignorate deoarece nu corespund modelelor specificate în parametri.

Update 1: Now I see you are using the '\r\n' terminator in

LINES TERMINATED BY '\r\n'

Ați încercat să modificați această linie pentru a utiliza doar '\ n':

LINES TERMINATED BY '\n'

?

Update 2: Try specify the table columns in LOAD DATA command;

LOAD DATA INFILE filename
INTO TABLE tablename
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'(
`tableColumn1` , `tableColumn2`, ..., `tableColumn65`
)

Eventual numărul de coloane de fișier și de tabel nu se potrivesc, sau coloanele fișierelor nu sunt în aceeași ordine a coloanelor din tabel.

1
adăugat
Pentru a lui Jeferson Oliveira: Când copiem 10000-15000 de rânduri din fișierul sursă într-un fișier text nou și folosesc comanda de mai sus, introduce aceste numeroase valori fără nici o eroare prietenului meu.
adăugat autor Shrikant, sursa
și yippe Am încercat acest lucru cu Liniile terminate de '\ n' , de asemenea
adăugat autor Shrikant, sursa
Ați încercat fără a utiliza cuvântul cheie LOCAL? Ce versiune de server MySQL folosiți? Windows sau server Linux? Ne puteți arăta un adevărat "nume de fișier"? Există probleme cu unele nume de fișiere pe serverele Windows.
adăugat autor jfoliveira, sursa

utilizați unelte externe

mysqlimport --ignore-lines=1 --fields-optionally-enclosed-by="\"" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE tablename.txt
1
adăugat
Am primit acest lucru din nou după ce am declanșat mysqlimport tablename: Înregistrări: 0 Șters: 0 Omis: 0 Avertismente: 0
adăugat autor Shrikant, sursa
mulțumesc Chasing Death și Triclosan .. Această problemă este un blocant te rog ajută-mă.
adăugat autor Shrikant, sursa

Am găsit răspunsul la întrebarea mea.

1.Iu divizat fișierul meu cu gslipts și a făcut modificări în consecință pentru fiecare fișier nou creat.

2. După ce am deschis aceste fișiere în format Excel corect timp de o jumătate de oră și apoi a creat un fișier csv pentru fiecare split (fișiere create de gslipts) comanda de date .

0
adăugat

Atunci când INFILE este imens, max_allowed_packet trebuie să fie ajustat pentru a se potrivi un maxim de 1G pentru acest link în refman pentru 5.6. https://dev.mysql.com/ doc/RefMan/5.6/ro/server-sistem-variables.html # sysvar_max_allowed_packet  Pregătirea ar putea include pentru sesiunea SET local_infile = 1; SET max_allowed_packet = 1073741824 (posibil mai multe opțiuni necesare) înainte de LOAD DATA INFILE numele fișierului INTO TABLE tablename ..... numele fișierului ar putea necesita o cale completă, adică. C: \ folder \ subdirector \ myfilename.ext

Avertisment schimbarea max_allowed_packet în .ini/.cfg la 1G va cauza probabil stres de memorie neașteptat în operațiunile zilnice. Utilizați variabilele de sesiune pentru a acoperi această cerință 1G pentru durata acestei sesiuni. Dacă nu aveți 1G de memorie disponibilă în acest scop, nu puteți avea succes oricum.

0
adăugat
MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.