Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Load data to mySQL and ignore specific columns

I am trying to load a csv file into mySQL. I want to ignore 3 columns so I am using the '@' character to achieve that. It seems that everything is being uploaded apart from the data after the first column I ignore (named : 'ignore1').

Is this a bug of mySQL software?

   LOAD DATA LOCAL INFILE 'Z:/test.csv'  
    INTO TABLE IN_Apolo
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (name, @date, @ignore1, @ignore2, @ignore3, column3, column4)
    set date = str_to_date(@date,'%Y-%m-%d')
    ;

column3 and column4 appear to be NULL

UPD:

I tried using this code and it works:

   LOAD DATA LOCAL INFILE 'Z:/test.csv'  
    INTO TABLE IN_Apolo
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (@name, @date, @column3, @column4)
    set name=@name, date = str_to_date(@date,'%Y-%m-%d'), column3=@column3, column4=@column4     ;

but it should work with the first version too.

like image 841
Datacrawler Avatar asked Dec 30 '25 20:12

Datacrawler


2 Answers

LOAD DATA LOCAL INFILE 'Z:/test.csv' 
INTO TABLE IN_Apolo 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(@name, @date,@column3, @column4)
set name=@name,date=str_to_date(@date,'%Y-%m-%d'),column3=@column3,column4=@column4;

Try using this...

like image 103
Anshul Choure Avatar answered Jan 02 '26 12:01

Anshul Choure


Table:

DROP TABLE IF EXISTS `test_table`;

CREATE TABLE `test_table` (
    `name` VARCHAR(20) DEFAULT NULL,
    `date` DATE DEFAULT NULL,
    `ignore_1` VARCHAR(20) DEFAULT NULL,
    `ignore_2` VARCHAR(20) DEFAULT NULL,
    `ignore_3` VARCHAR(20) DEFAULT NULL,
    `column_3` VARCHAR(20) DEFAULT NULL,
    `column_4` VARCHAR(20) DEFAULT NULL
) ENGINE=InnoDB;

File:

/path/to/test_file.csv

"name","date","ignore_1","ignore_2","ignore_3","column_3","column_4"
"name_0","2000-01-01","ignore_1_0","ignore_2_0","ignore_3_0","column_3_0","column_4_0"
"name_1","2000-01-02","ignore_1_1","ignore_2_1","ignore_3_1","column_3_1","column_4_1"
"name_2","2000-01-03","ignore_1_2","ignore_2_2","ignore_3_2","column_3_2","column_4_2"

MySQL Command-Line:

mysql> LOAD DATA INFILE '/path/to/test_file.csv'
       INTO TABLE `test_table`
       FIELDS TERMINATED BY ','
       ENCLOSED BY '"'
       LINES TERMINATED BY '\n'
       IGNORE 1 ROWS
       (`name`, @`date`, @`ignore_column`, @`ignore_column`, @`ignore_column`, `column_3`, `column_4`)
       SET `date` = STR_TO_DATE(@`date`, '%Y-%m-%d');
like image 23
wchiquito Avatar answered Jan 02 '26 13:01

wchiquito



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!