Thursday, September 1, 2016

Load .csv data to table

Load .csv data to table:
===================

Need to load data from .csv file to table 'loadTest'

mysql> desc loadTest;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id        | int(11)     | NO |     | NULL |       |
| name      | varchar(20) | NO |     | NULL |       |
| sal       | int(11)     | NO |     | NULL |       |
| createdBy | varchar(20) | NO |     | NULL |       |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Note: 2 INT columns, 2 VARCHAR columns

Content in File:
mysql> \! cat /tmp/loadTest.csv
id,name,sal
1,gaurav,200
2,gagan,300

Note: Table contains 4 columns, where as spreadsheet contains 3 columns. (Need to pass 1 value while loading)

Load Content:
mysql -utest -ptest -Dpractice <<EOF >> /tmp/loadTest.log
SET max_error_count=10000;
LOAD DATA LOCAL INFILE '/tmp/loadTest.csv' IGNORE INTO TABLE loadTest character set utf8
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES
(@id,@name,@sal)
  SET id=@id,
      name = @name,
      sal = @sal,
      createdBy = 'Admin';
  COMMIT;
  SHOW WARNINGS;
  SELECT @@session.warning_count\G
EOF

Check LogFile:
mysql> \! cat /tmp/loadTest.log
*************************** 1. row ***************************
@@session.warning_count: 0

Special Keywords:
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES              

Note:
In case we don't want to replicate data, please use:
SET SQL_LOG_BIN=0;

No comments:

Post a Comment