我在数据库中有一个名为locations
的表,其中包含2列(id
自动递增,location
),而且我有一个csv包含1列,如下所示:
当我尝试将该文件导入locations
表时,我收到此错误invalid column count in CSV input on line 1
。
我也试过了CSV using LOAD DATA
,但我得到了这个:MySQL returned an empty result set (i.e. zero rows)
答案 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();