I'm trying to Load a CSV file into my MySQL database,
But I would like to skip the first line.
I fact It contains the name of my columns and no interesting data.
Here is the query I'm using:
LOAD DATA LOCAL INFILE '/myfile.csv'
INTO TABLE tableName
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
(column,column,column);
LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES;
(reference)
For those curious, IGNORE N LINES should be after the separator qualifiers:
LOAD DATA LOCAL INFILE '/myfile.csv'
INTO TABLE tableName
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(column,column,column);
Try this:
IGNORE N LINES
LOAD DATA INFILE "/path/to/file.csv"
INTO TABLE MYTABLE
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
I have a single csv file with data that I am trying to load into MySQL using LOAD DATA. My problem is the csv file has data that belongs in 3 separate tables. Line 1 goes into table1, line 2-3 goes into table 2, and all remaining lines go into table 3. I can use IGNORE 3 LINES for the 3rd table, but not sure how to ignore lines after my required data for the first 2 tables.
Here is my LOAD DATA so far:
LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name2
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name3
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 3 LINES;
I am trying to load data from Excel/ CSV file in MYSQL DB?
What is wrong with this code??
LOAD DATA INFILE "D:/MY_SQL_Practice/Sales_Data.csv" INTO TABLE sales_data
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
ignore 1 rows;
Like describe on mysql reference, https://dev.mysql.com/doc/refman/8.0/en/load-data.html
The example used only ' and never " on syntax :
LOAD DATA INFILE '/tmp/jokes.txt' INTO TABLE jokes
FIELDS TERMINATED BY ''
LINES TERMINATED BY '\n%%\n' (joke);
Can you try this syntax ? replace " by ':
LOAD DATA INFILE 'D:/MY_SQL_Practice/Sales_Data.csv' INTO TABLE sales_data
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
ignore 1 rows;
I have a text file in the following format, which contains about a million coupon codes.
93C9LF,PDF934,24YWJ4
93C9LF,PDF934,24YWJ4
93C9LF,PDF934,24YWJ4
Below is my query
LOAD DATA LOCAL INFILE /var/www/coupons.txt
INTO TABLE coupons
FIELDS TERMINATED BY '' ENCLOSED BY '' ESCAPED BY ''
LINES STARTING BY '' TERMINATED BY ','
(coupon);
When I execute this query only some are inserted into the database. I would like to know what I am doing wrong or what could be done to improve this query.
Hi Rezaq you can use this:
LOAD DATA LOCAL INFILE '/var/www/coupons.txt'
INTO TABLE coupons
FIELDS TERMINATED BY '\t'
ENCLOSED BY ','
LINES TERMINATED BY '\n'
(coupon);
I have a CSV file which contains 10 columns. I want to select only some columns from that file and load them into a MySQL database using the LOAD DATA INFILE command.
Load data into a table in MySQL and specify columns:
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 are variables to hold the csv file columns (assume 4 ) name,id are table columns.
Specify the name of columns in the CSV in the load data infile statement.
The code is like this:
LOAD DATA INFILE '/path/filename.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(column_name3, column_name5);
Here you go with adding data to only two columns(you can choose them with the name of the column) to the table.
The only thing you have to take care is that you have a CSV file(filename.csv) with two values per line(row). Otherwise please mention. I have a different solution.
Thank you.
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';
Just replace the column1, column2, etc.. with your column names, and put #dummy anwhere there's a column in the CSV you want to ignore.
Full details here.
Example:
contents of the ae.csv file:
"Date, xpto 14"
"code","number","year","C"
"blab","15885","2016","Y"
"aeea","15883","1982","E"
"xpto","15884","1986","B"
"jrgg","15885","1400","A"
CREATE TABLE Tabletmp (
rec VARCHAR(9)
);
For put only column 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
if you have number of columns in your database table more than number of columns in your csv you can proceed like this:
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,...);
For those who have the following error:
Error Code: 1290. The MySQL server is running with the
--secure-file-priv option so it cannot execute this statement
You can simply run this command to see which folder can load files from:
SHOW VARIABLES LIKE "secure_file_priv";
After that, you have to copy the files in that folder and run the query with LOAD DATA LOCAL INFILE instead of LOAD DATA INFILE.