I ran into some trouble using LOAD DATA INFILE command as i wanted to ignore the lines that was already in the data base..say if i have a table with data as follows,
id |name |age -------------------- 1 |aaaa |22 2 |bbbb |21 3 |bbaa |20 4 |abbb |22 5 |aacc |22
Where id is auto increment value. an the csv file i have contains data as follows,
"cccc","14" "ssee","33" "dddd","22" "aaaa","22" "abbb","22" "dhgg","34" "aacc","22"
I want to ignore the rows,
"aaaa","22" "abbb","22" "aacc","22"
and upload the rest to the table. and the query i have yet which uploads everything to the table is as follows,
LOAD DATA INFILE 'member.csv' INTO TABLE tbl_member FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' (name, age);
PLEASE help me on this task.. It will be much appreciated..i tried many links but did not help :(
When you insert a new row into a table if the row causes a duplicate in UNIQUE index or PRIMARY KEY , MySQL will issue an error. However, if you specify the ON DUPLICATE KEY UPDATE option in the INSERT statement, MySQL will update the existing row with the new values instead.
The local_infile system variable controls server-side LOCAL capability. Depending on the local_infile setting, the server refuses or permits local data loading by clients that request local data loading. By default, local_infile is disabled. (This is a change from previous versions of MySQL.)
mysql> LOAD DATA LOCAL INFILE '/path/pet. txt' INTO TABLE pet; If you created the file on Windows with an editor that uses \r\n as a line terminator, you should use this statement instead: mysql> LOAD DATA LOCAL INFILE '/path/pet.
Open my. ini file with a text editor. Look for the headers [client] , [mysql] under the CLIENT section & [mysqld] under the SERVER section. Save the file and restart MySQL80 service under the Windows local services.
Create a UNIQUE index on the age column, then:
LOAD DATA INFILE 'member.csv' IGNORE INTO TABLE tbl_member FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' (name, age);
One approach is to use a temporary table. Upload to this and use SQL to update tbl_member from temp table.
INSERT INTO tbl_member SELECT Field1,Field2,Field3,... FROM temp_table WHERE NOT EXISTS(SELECT * FROM tbl_member WHERE (temp_table.Field1=tbl_member.Field1 and temp_table.Field2=tbl_member.Field2...etc.) )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With