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

本文介绍如何使用LOAD DATA INFILE高效地将文本文件中的数据加载到MySQL表中。包括标准语法、字段及行终止符设置、忽略首行、指定部分列加载等特性,并通过实例演示了如何将CSV文件数据导入到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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) 没有了~

好的,以下是一些常见数据库管理系统的导入CSV文件数据库的示例操作步骤: MySQL: 1. 使用 LOAD DATA INFILE 命令导入数据,示例语句如下: ``` LOAD DATA INFILE 'filename.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ``` 其中,filename.csv 是要导入CSV 文件名,tablename 是要导入数据的名,FIELDS TERMINATED BY ',' 示字段之间用逗号分隔,ENCLOSED BY '"' 示字段值用双引号括起来,LINES TERMINATED BY '\n' 示行之间用换行符分隔,IGNORE 1 ROWS 示忽略 CSV 文件中的第一行头。 2. 使用 LOAD DATA LOCAL INFILE 命令导入本地 CSV 文件(需要先启用 local_infile 参数),示例语句如下: ``` SET GLOBAL local_infile = 1; LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ``` PostgreSQL: 1. 使用 COPY 命令导入数据,示例语句如下: ``` COPY tablename FROM 'filename.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"' ESCAPE '\'; ``` 其中,filename.csv 是要导入CSV 文件名,tablename 是要导入数据的名,WITH CSV HEADER CSV 文件中包含头,DELIMITER ',' 示字段之间用逗号分隔,QUOTE '"' 示字段值用双引号括起来,ESCAPE '\' 示转义字符为反斜杠。 2. 使用 \copy 命令导入本地 CSV 文件,示例语句如下: ``` \copy tablename FROM 'filename.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"' ESCAPE '\'; ``` Oracle: 1. 使用 SQL*Loader 工具导入数据,示例语句如下: ``` LOAD DATA INFILE 'filename.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS; ``` 其中,filename.csv 是要导入CSV 文件名,tablename 是要导入数据的名,FIELDS TERMINATED BY ',' 示字段之间用逗号分隔,OPTIONALLY ENCLOSED BY '"' 示字段值用双引号括起来,TRAILING NULLCOLS 示忽略 CSV 文件中的空列。 2. 使用外部(External Table)导入数据,示例语句如下: ``` CREATE TABLE tablename_external ( column1 datatype1, column2 datatype2, column3 datatype3 ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY dir_name ACCESS PARAMETERS ( RECORDS DELIMITED BY '\n' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL ) LOCATION ('filename.csv') ) REJECT LIMIT UNLIMITED; ``` 其中,dir_name 是 Oracle 目录的名称,filename.csv 是要导入CSV 文件名,ACCESS PARAMETERS 中的参数与上述 SQL*Loader 工具中的参数相同,REJECT LIMIT UNLIMITED 导入时出现错误时不限制错误数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值