上传csv文件以选择表中的列

时间:2015-12-30 05:48:19

标签: php mysql csv load import-from-csv

我有CSV文件有3列,我的表有4列(其中一列是我想自动增量的id自动增量)。我想将csv中的3列加载到表中选定的3列。

尝试过的代码:

LOAD DATA LOCAL INFILE 'info.csv' INTO TABLE tbl_countryip (ipstart, ipend, countrycode) FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'  ;

抛出错误:

  

错误1064(42000):您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以便在'FIELDS TERMINATED BY'附近使用正确的语法,'包含'''在第1行'\ r \ n''终止的行

3 个答案:

答案 0 :(得分:2)

按照以下步骤 -

1)连接任何类似sqlyog的gui。

2)选择db>选择表>右键单击表格>选择导入>使用load ...

导入csv数据

3)选择除主键之外的所有列。

4)如果你的csv文件包含标题,则将1放在ingnore line选项中。

5)点击导入

如果你想通过命令执行,那么命令应该如下 -

LOAD DATA LOCAL INFILE 'info.csv' INTO TABLE tbl_countryip FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' (ipstart, ipend, countrycode);

注意:如果您的相关目录不在csv文件的位置,那么您需要提供完整路径。

如果您的csv文件包含标题行,则需要按以下方式将其排除 -

LOAD DATA LOCAL INFILE 'info.csv' INTO TABLE tbl_countryip FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (ipstart, ipend, countrycode);

答案 1 :(得分:2)

列的列表位于语句中的错误位置。请遵循文档中的语法。

你想要这样的东西:

  LOAD DATA LOCAL INFILE 'info.csv' 
  INTO TABLE tbl_countryip 
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n'
  (ipstart, ipend, countrycode) 

参考:http://dev.mysql.com/doc/refman/5.5/en/load-data.html

答案 2 :(得分:0)

我从表中删除了id列,因此table和csv文件都有3列,然后运行load csv命令,然后使用autoincrement将id列插入到表中。