mysql导入csv文件时CSV输入中的列数无效

时间:2018-03-17 10:45:31

标签: mysql sql csv

我在数据库中有一个名为locations的表,其中包含2列(id自动递增,location),而且我有一个csv包含1列,如下所示: enter image description here

当我尝试将该文件导入locations表时,我收到此错误invalid column count in CSV input on line 1

我也试过了CSV using LOAD DATA,但我得到了这个:MySQL returned an empty result set (i.e. zero rows)

2 个答案:

答案 0 :(得分:0)

也许你应该使用:

$array = array_map('str_getcsv', file('file.csv'));

您有更多选项来检查变量。

答案 1 :(得分:0)

如果您的计算机支持Java,请使用以下解决方案

https://dbisweb.wordpress.com/

需要进行的简单配置是

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <connections>
      <jdbc name="mysql">
          <driver>com.mysql.jdbc.Driver</driver>
          <url>jdbc:mysql://localhost:3306/test1</url>
          <user>root</user>
          <password></password>
      </jdbc>
  </connections>
  <component-flow>
      <execute name="file2table" enabled="true">
          <migrate>
              <source>
                  <file delimiter="," header="false" path="D:/test_source.csv"/>
              </source>
              <destination>
                  <table connection="mysql">locations</table>
              </destination>
              <mapping>
                  <column source="1" destination="location" />
              </mapping>
          </migrate>
      </execute>
  </component-flow>
</config>

如果您感兴趣,可以通过Java代码实现相同。

  

Source source = new File("D:/test_source.csv", ',', false);
        Destination destination = new Table("locations", new JDBCConnection("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/test1", "root", ""));
        List<Mapping> mapping = new ArrayList<>();
        mapping.add(new Mapping("1", "location", null));
        Component component = new MigrateExecutor(source, destination, mapping);
        component.execute();