將csv的數據導入mysql


手頭有一份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:/


六、再次執行導入(二),順利的話,可以去數據庫里徜徉了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM