У меня есть таблица в базе данных, называемая 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 (ie zero rows)
Если 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();
Возможно, вам следует использовать:
$array = array_map('str_getcsv', file('file.csv'));
У вас есть больше возможностей для проверки переменных.