MySQL导入csv文件

自己也导了好多次csv文件的数据到mysql数据库中, 无奈每次都有不同的bug, 故记录下一些参数.

题外话

给没有主键的表添加主键的方法.

  1. 创建一个临时表

    create table stu1 as select * from stu;

  2. 删除原有表数据

    delete from stu;

  3. 给原有表添加主键

    alter table stu add id int not null auto_increment primary key;

  4. 从临时表恢复数据到原有表

    insert into stu(name, age, phone) select * from stu1;

正式开始–导入csv文件

主要就是用load data infile 命令(导数据很快)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
LOAD DATA INFILE
'/Users/daejong/Desktop/job1.csv'
INTO table tb_job
CHARACTER SET utf8
FIELDS
TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(address, company, name, time, salary, link);


参数详解:
terminated by描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠(backslash:\ )
IGNORE number LINES

一般导入数据的时候, 不推荐数据之间有空行, 如果有空行, 由于数据比较多, 不推荐自己手动删除, 我通常用的是atom里面搜索替换(正则表达式),

1
2
3
4
5
6
7
在atom编辑器中: command + F
使用正则表达式:
点击:[ . * ](红圈圈出)
或快捷键:Alt + Ctrl + / 或 Alt + Cmd + /

输入正则表达式选择换行符与相连续的空字符字符串:\n[ \t]*\n ( [ \t] 中 "\t" 前有空格)
替换为单一换行符:\n