yoyotl

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

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

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

例如:

DROP TABLE IF EXISTS `cdr`;
CREATE TABLE `cdr` (
    `direction` varchar(255) DEFAULT NULL,
    `caller` varchar(255) DEFAULT NULL,
    `callee` varchar(255) DEFAULT NULL,
    `context` varchar(255) DEFAULT NULL,
    `start_stamp` timestamp NULL DEFAULT NULL,
    `answer_stamp` varchar(255) DEFAULT NULL,
    `end_stamp` timestamp NULL DEFAULT NULL,
    `duration` int(255) DEFAULT NULL,
    `billsec` int(255) DEFAULT NULL,
    `hangup_cause` varchar(255) DEFAULT NULL,
    `uuid` varchar(255) DEFAULT NULL,
    `bleg_uuid` varchar(255) DEFAULT NULL,
    `accountcode` varchar(255) DEFAULT NULL,
    `read_codec` varchar(255) DEFAULT NULL,
    `write_codec` varchar(255) 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没有正确的配置导致的报错。


五、解决问题

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


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

分类:

技术点:

相关文章: