mysql 导入 csv 大文件_mysql中导入大容量csv或txt数据文件

导入数据文件时可以使用一些mysql客户端工具,如navicat,但是如果数据量过大,这个导入过程会非常的长,如果机器配置过低,甚至出现假死的情况,此时,使用mysql的load data来导入数据文件,再合适不过了(insert跟它比起来就是个渣)。

因为使用navicat这样的工具,是将这些数据转化为insert语句,执行insert语句来插入。

一、load data的用法LOAD DATA[LOW_PRIORITY|CONCURRENT][LOCAL]INFILE'file_name'

[REPLACE|IGNORE]

INTO TABLE tbl_name

[PARTITION(partition_name,...)]

[CHARACTER SET charset_name]

[{FIELDS|COLUMNS}

[TERMINATED BY'string']

[[OPTIONALLY]ENCLOSED BY'char']

[ESCAPED BY'char']

]

[LINES

[STARTING BY'string']

[TERMINATED BY'string']

]

[IGNORE number{LINES|ROWS}]

[(col_name_or_user_var,...)]

[SET col_name=expr,...]

说明:

low_priority表示导入数据的优先级比较低,如果有其他程序在对数据库表进行读写,先暂停导入,等不再操作数据库表的情况下才导入数据

concurrrent表示其他人在读写数据库表时也可以同时进行这个导入操作,但这会影响导入性能,不建议使用

local表示导入的是本地文件

infile后面跟着要导入的文件路径

replace表示如果唯一主键出现重复,即导入的数据与之前的数据有主键冲突,则替换原有的数据

ignore表示忽略原有主键所在行数据

patition表示指定数据表分区

character set表示设置字符编码

fields指定数据表的字段

terminated by指定字段的分隔符

ingore number lines表示忽略某行或某列(有此数据在第一行会显示字段信息,第二行开始才是数据,因此要忽略第一行,只导入数据行)

例子:

有一份全国省级行政区域的名称及简称的数据:

province,letter

安徽,AH

北京,BJ

福建,FJ

甘肃,GS

广东,GD

广西,GX

贵州,GZ

海南,HI

河北,HE

河南,HA

黑龙江,HL

湖北,HB

湖南,HN

吉林,JL

江苏,JS

江西,JX

辽宁,LN

内蒙古,IM

宁夏,NX

青海,QH

山东,SD

山西,SX

陕西,SN

上海,SH

四川,SC

天津,TJ

西藏,XZ

新疆,XJ

云南,YN

浙江,ZJ

重庆,CQ

澳门,MO

香港,HK

台湾,TW

如果我想把它导入一张省份表中,那么,可以使用:

mysql-uroot-p geoip--local-infile=1-e'load data local infile "/data/web/www/localhost/localapp/geoip/province.txt" into table province FIELDS TERMINATED BY "," IGNORE 1 LINES (province_name,province_code);'

二、load data的注意事项:

1、导入数据前先要有一张与导入数据对应的表,如上例中得有一个province表,其结构如下:

918b55f7681235d244e6dcd86a8f6ef1.pngCREATE TABLE`province`(

`province_name`varchar(50)NOT NULL,

`province_code`varchar(50)NOT NULL,

PRIMARY KEY(`province_name`),

UNIQUE KEY`idx_code`(`province_code`)

)ENGINE=InnoDBDEFAULT CHARSET=utf8;

2、注意导入文件的编码与数据库表的字符编码要保持一致

3、这个命令是在命令行下执行的(1)如果数据库服务器已经开启了load data的功能,则直接在进入mysql命令行客户端执行load data即可

(2)如果数据库服务器没有开启load data的功能,则可以使用:

使用mysql客户端直接执行load data语句

mysql-uusername-p password databasename--local-infile=1-e'load data语句';

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值