Mam plik CSV zawierający 10 kolumn. Chcę wybrać tylko niektóre kolumny z tego pliku i załadować je do bazy danych MySQL za pomocą LOAD DATA INFILE
polecenia.
83
Załaduj dane do tabeli w MySQL i określ kolumny:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2 ;
@ col1,2,3,4 to zmienne do przechowywania kolumn pliku csv (załóżmy 4) nazwa, id to kolumny tabeli.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
.for i in range(1,100): print("@column",i,",",end="",sep="")
LOAD DATA INFILE 'file.csv' INTO TABLE t1 (column1, @dummy, column2, @dummy, column3, ...) FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n';
Po prostu zastąp kolumnę 1, kolumna 2 itd. Nazwami kolumn i umieść @dummy w miejscu, w którym w pliku CSV jest kolumna, którą chcesz zignorować.
Pełne szczegóły tutaj .
źródło
(field,names)
znak tuż przed średnikiem na końcu, aby działał.Określ nazwy kolumn w pliku CSV w instrukcji ładowania danych infile.
Kod wygląda tak:
LOAD DATA INFILE '/path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (column_name3, column_name5);
Tutaj idziesz dodając dane tylko do dwóch kolumn (możesz je wybrać z nazwą kolumny) do tabeli.
Jedyną rzeczą, na którą musisz zwrócić uwagę, jest to, że masz plik CSV (nazwa_pliku.csv) z dwiema wartościami w wierszu (wierszu). W przeciwnym razie proszę wspomnieć. Mam inne rozwiązanie.
Dziękuję Ci.
źródło
Przykład:
zawartość pliku ae.csv:
CREATE TABLE Tabletmp ( rec VARCHAR(9) );
Dla wstawić tylko kolumnę 3:
LOAD DATA INFILE '/local/ae.csv' INTO TABLE Tabletmp FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 2 LINES (@col1, @col2, @col3, @col4, @col5) set rec = @col3; select * from Tabletmp; 2016 1982 1986 1400
źródło
jeśli masz więcej kolumn w swojej tabeli bazy danych niż liczba kolumn w swoim csv, możesz postępować w ten sposób:
LOAD DATA LOCAL INFILE 'pathOfFile.csv' INTO TABLE youTable CHARACTER SET latin1 FIELDS TERMINATED BY ';' #you can use ',' if you have comma separated OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' (yourcolumn,yourcolumn2,yourcolumn3,yourcolumn4,...);
źródło
Dla tych, którzy mają następujący błąd:
Możesz po prostu uruchomić to polecenie, aby zobaczyć, z którego folderu można ładować pliki:
SHOW VARIABLES LIKE "secure_file_priv";
Następnie musisz skopiować pliki w tym folderze i uruchomić zapytanie z
LOAD DATA LOCAL INFILE
zamiastLOAD DATA INFILE
.źródło