您的位置:首页 > 数据库 > MySQL

MySQL _LOAD DATA 导入 csv 文件到数据库表操作日志

2016-07-11 10:46 776 查看

1.说明

LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。

标准语法:

LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES


语法说明:

将文件“data.txt”中的数据写入“tbl_name”表中

字段以“,”结尾

无视“””双引号(字段以双引号包裹的情况,根据数据格式定义)

每一行数据以“\n”结尾(针对于win环境,Linux不需要这条命令)

忽略第一行(可选)

如果您只想载入一个表的部分列,则应指定一个列清单:

LOAD DATA LOCAL INFILE 'persondata.txt' INTO TABLE tbl_name (col1,col2);


文件的路径

如果指定了LOCAL,则被认为与连接的客户端有关:

1.如果指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。如果给定的是一个相对的路径名称,则此名称会被理解为相对于启动客户端时所在的目录。

2.如果LOCAL没有被指定,则文件必须位于服务器主机上,并且被服务器直接读取。

当在服务器主机上为文件定位时,服务器使用以下规则:

1).如果给定了一个绝对的路径名称,则服务器使用此路径名称。

2).如果给定了带有一个或多个引导组件的相对路径名称,则服务器会搜索相对于服务器数据目录的文件。

3).如果给定了一个不带引导组件的文件名称,则服务器会在默认数据库的数据库目录中寻找文件。

注意,这些规则意味着名为./myfile.txt的文件会从服务器数据目录中被读取,而名为myfile.txt的同样的文件会从默认数据库的数据库目录中读取。

以下示例记录我以不指定local,将文件上传到服务器主机,并给绝对路径为例

2.准备工作:

1) 数据文件(test.csv)

格式

流水ID,日期,备注,收入,支出,余额
234534654653,2016-07-04 11:12:58,可用金充值,1000.0,0.0,131016.97
234534654651,2016-06-30 10:44:07,可用金充值,2287.0,0.0,133075.01
234534654652,2016-06-16 16:24:20,可用金充值,850.0,0.0,132172.55
234534654654,2016-06-02 17:19:12,可用金充值,6861.0,0.0,142621.41


2) 根据数据文件创建数据库表

3.操作

1) 把数据文件(以“test.csv”为例)上传到Linux的tmp目录(目录随便,我以tmp为例)

注意:如果是.csv格式文件,上传之前另存为utf8格式,不要用中文命名。

2) 登录MySQL,选择数据库,根据文件中的字段创建数据库表(或者你已经有数据库表)tabl_test

3) 登录MySQL,选择数据库,执行数据导入

LOAD DATA INFILE '/tmp/test.csv'
INTO TABLE tabl_test
FIELDS TERMINATED BY ','
ignore 1 lines
(stream_id, date, comment, income, expend, total);


4) 没有了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql LOAD-DATA