Sunt blocat într-o situație în care trebuie să citesc date din 3 fișiere CSV mari separate și să le stochez în baza de date MySQL.
coloane din fișierul csv:
total_rev,monthly_rev,day_rev
Coloanele tabelei din baza de date: Tabel de date::
total_rev, monthly_rev, day_rev, from
Pot să introduc date în tabelul meu folosind următoarea interogare:
LOAD DATA LOCAL INFILE '/home/datauser/Desktop/working/revenue_2016_10_06.csv'
INTO TABLE revenue_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
(total_rev,monthly_rev,day_rev);
Dar sunt blocat într-o situație în care vreau să adaug un parametru codificat în interogarea „Load Data Local” pentru a adăuga dinîn funcție de fișier.
astfel încât la sfârșitul tabelului meu să conțină înregistrări de tipul:
total_rev, monthly_rev, day_rev, from
11, 222, 333, file1
22, 32, 343, file1
11, 22, 333, file1
11, 22, 33, file22
11, 22, 33, file22
Cum pot specifica aceste valori file1, file22 în interogarea de mai sus?
Adăugați un SET
clauză la instrucțiunea LOAD DATA, pentru a atribui o valoare la (din păcate numită) from
coloană:
LOAD DATA LOCAL INFILE '/home/datauser/Desktop/working/revenue_2016_10_06.csv'
INTO TABLE revenue_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
(total_rev,monthly_rev,day_rev)
SET `from` = 'file1'
;
Rețineți că este de asemenea posibil să încărcați câmpurile din fișier în variabile definite de utilizator și/sau să faceți referire la variabilele definite de utilizator în clauza SET.
SET @file_name = 'myfilename'
;
LOAD DATA LOCAL INFILE '/home/datauser/Desktop/working/revenue_2016_10_06.csv'
INTO TABLE revenue_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
( @total_rev
, @monthly_rev
, @day_rev
)
SET `total_rev` = @total_rev
, `monthly_rev` = @monthly_rev
, `day_rev` = @day_rev
, `from` = @file_name
;
Dacă aveam câmpuri în fișier pe care dorim să le sărim, nu să le încărcăm în tabel, putem folosi o variabilă definită de utilizator ca un spațiu de rezervă. De asemenea, putem folosi expresii în clauza SET, ceea ce ne permite să folosim unele funcții MySQL foarte utile pentru anumite manipulări… IFNULL, NULLIF, STR_TO_DATE, CONCAT, etc.
LOAD DATA LOCAL INFILE @file_name
sintaxa? – > Por hriziya.