将csv的数据导入mysql

时间:2022-01-28 04:12:14

手头有一份8MB的CSV文件需要分析,对于程序员来说,还有比在数据库里分析更愉快的事情吗?

所以让我们把CSV导入MYSQL吧。

一、首先按照文件列数创建相应的SQL表

例如:

DROP TABLE IF EXISTS `cdr`;
CREATE TABLE `cdr` (
`direction` varchar() DEFAULT NULL,
`caller` varchar() DEFAULT NULL,
`callee` varchar() DEFAULT NULL,
`context` varchar() DEFAULT NULL,
`start_stamp` timestamp NULL DEFAULT NULL,
`answer_stamp` varchar() DEFAULT NULL,
`end_stamp` timestamp NULL DEFAULT NULL,
`duration` int() DEFAULT NULL,
`billsec` int() DEFAULT NULL,
`hangup_cause` varchar() DEFAULT NULL,
`uuid` varchar() DEFAULT NULL,
`bleg_uuid` varchar() DEFAULT NULL,
`accountcode` varchar() DEFAULT NULL,
`read_codec` varchar() DEFAULT NULL,
`write_codec` varchar() DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

二、导入命令

load data infile '需要导入的文件全名' into table 将要导入的数据库表名 fields terminated by '列的分隔符' optionally enclosed by '"' escaped by '"' lines terminated by '回车换行符';

实例:

load data infile 'D:/Master.csv' into table cdr fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

注意这个结束换行符,如果是linux下生成的文件,就是'\n'结尾。

三、报错:

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

四、原因

show variables like 'secure%';

看到这个:
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_auth | ON |
| secure_file_priv | NULL |
+------------------+-------+
就是secure_file_priv没有正确的配置导致的报错。

五、解决问题

. 找到my.ini文件
. 添加配置
secure_file_priv = D:/

六、再次执行导入(二),顺利的话,可以去数据库里徜徉了。