【数据库】SQL导入CSV到表中指定部分字段

来源:互联网 发布:如何利用淘宝套现 编辑:程序博客网 时间:2024/06/02 11:24

博客背景:欲将csv文件导入到MySQL下数据库中进行下一步的变换操作


对此常用的导入语句为load data,基本格式为 :

mysql> LOAD DATA INFILE [path of csv file] INTO TABLE [table name] 


结果初次调用就直接报错了:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

报错是涉及MySQL的服务器权限问题,如下加上LOCAL关键字即可视为从客户主机上读取即可解决该问题

mysql> LOAD DATA  LOCAL INFILE [path of csv file] INTO TABLE [table name] 


之后选择导入数据到数据表指定字段时还算顺利,直接执行如下指令即可:

mysql> LOAD DATA  LOCAL INFILE [path of csv file] INTO TABLE [table name] (column1, column2...)

但在导入时加入了CSV格式处理信息后,我输入如下指令:

mysql> LOAD DATA  LOCAL INFILE [path of csv file] INTO TABLE [table name](column1, column2...)  FIELDS TERMINATED BY ',' ...(...中包含enclosed, escaped, ignore

 xx lines等等其它设置)

又报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...


此时如果删掉指定字段(column1, column2)的内容后则错误消失,一度以为指定字段和指定CSV格式不能同时进行(但这也太不科学了)

多番查找资料无果,几乎决定用方法二(放弃部分字段导入方式,直接建全表全部导入后再DROP列...)后来在一条百度知道的提问中受到启发,琢磨该不会指定字段语句的顺序在指定格式之后?

于是指令调整为:mysql> LOAD DATA  LOCAL INFILE [path of csv file] INTO TABLE [table name]  FIELDS TERMINATED BY ',' ... (column1, column2...)

执行通过。


MySQL十分反直觉地把指定字段的(columns)语句放在了FIELDS相关语句之后,并不是紧跟在TABLE后面


毕竟不是自己开发的软件。用别人的东西开发,不能太想当然

阅读全文
0 0
原创粉丝点击