csv mysql_csv 导入到MySQL

LOAD DATA INFILE语句允许您从文本文件读取数据,并将文件的数据快速导入数据库的表中。

创建将要导入文件的数据对应的数据库表。

use testdb;

CREATE TABLE discounts (

id INT NOT NULL AUTO_INCREMENT,

title VARCHAR(255) NOT NULL,

expired_date DATE NOT NULL,

amount DECIMAL(10 , 2 ) NULL,

PRIMARY KEY (id)

);

准备好一个CSV文件,其数据与表的列数和每列中的数据类型相匹配。

连接到MySQL数据库服务器的帐户具有FILE和INSERT权限。

以下语句将数据从F:/worksp/mysql/discounts.csv文件导入到discounts表。

LOAD DATA INFILE 'F:/worksp/mysql/discounts.csv'

INTO TABLE discounts

FIELDS TERMINATED BY ','

ENCLOSED BY '"'

LINES TERMINATED BY '\n'

IGNORE 1 ROWS;

FIELD TERMINATED BY指示的逗号终止

ENCLOSED BY指定的双引号括起来。

IGNORE 1 ROWS列标题不需要导入到表中,忽略第一行。

现在,我们可以查看表中的数据,查看是否成功导入了数据。

SELECT COUNT(*) FROM discounts;

导入时转换数据

有时,数据格式与表中的目标列不匹配。在简单的情况下,可以使用LOAD DATA INFILE语句中的SET子句进行转换。

假设有一个discount_2.csv文件中,它存储的过期日期列是mm/dd/yyyy格式。其内容如下所示 -

id,title,expired date,amout

4,"Item-4","01/04/2018",200

5,"Item-5","01/09/2017",290

6,"Item-6","12/08/2018",122

将数据导入表时,必须使用str_to_date()函数将其转换为MySQL日期格式,如下所示:

LOAD DATA INFILE 'F:/worksp/mysql/discounts_2.csv'

INTO TABLE discounts

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\n'

IGNORE 1 ROWS

(id,title,@expired_date,amount)

SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');

将文件从客户端导入远程MySQL数据库服务器

可以使用LOAD DATA INFILE语句将数据从客户端(本地计算机)导入远程MySQL数据库服务器。

LOAD DATA LOCAL INFILE 'c:/tmp/discounts.csv'

INTO TABLE discounts

FIELDS TERMINATED BY ','

ENCLOSED BY '"'

LINES TERMINATED BY '\n'

IGNORE 1 ROWS;

唯一的区别是语句中多了个LOCAL选项。如果加载一个大的CSV文件,将会看到使用LOCAL选项来加载该文件将会稍微慢些,因为需要时间将文件传输到数据库服务器。

报错

Loading local data is disabled; this must be enabled on both the client and server sides。

那么可能是本地文件没有开启,输入命令:show variables like 'local_infile';

6f95d8e6dd8f

然后开启:set global local_infile=on;

6f95d8e6dd8f

不过开启后加载文件仍然报错。

mysql --local-infile -u username -p

6f95d8e6dd8f

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。

打开my.cnf 或 my.ini,加入以下语句后重启mysql。

secure_file_priv=''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值