Существует некий csv файл
geoname_id,locale_code,continent_code,continent_name,country_iso_code,country_name,subdivision_1_iso_code,subdivision_1_name,subdivision_2_iso_code,subdivision_2_name,city_name,metro_code,time_zone,is_in_european_union
333750,en,AF,Africa,ET,Ethiopia,SN,"Southern Nations, Nationalities, and People's Region",,,Jinka,,Africa/Addis_Ababa,0
333772,en,AF,Africa,ET,Ethiopia,OR,Oromiya,,,Jimma,,Africa/Addis_Ababa,0
333795,en,AF,Africa,ET,Ethiopia,SO,Somali,,,Jijiga,,Africa/Addis_Ababa,0
335035,en,AF,Africa,ET,Ethiopia,HA,"Harari Region",,,Harar,,Africa/Addis_Ababa,0
336014,en,AF,Africa,ET,Ethiopia,AM,Amhara,,,Gondar,,Africa/Addis_Ababa,0
336015,en,AF,Africa,ET,Ethiopia,AM,Amhara,,,Gonder,,Africa/Addis_Ababa,0
337405,en,AF,Africa,ET,Ethiopia,GA,Gambela,,,Gambela,,Africa/Addis_Ababa,0
337996,en,AF,Africa,ET,Ethiopia,,,,,,,Africa/Addis_Ababa,0
338010,en,AF,Africa,ER,Eritrea,,,,,,,Africa/Asmara,0
При попытке импорта в mysql или sqlite3 он ругается на строку 333750,en,AF,Africa,ET,Ethiopia,SN,"Southern Nations, Nationalities, and People's Region",,,Jinka,,Africa/Addis_Ababa,0 из-за несоответствия кол-ва столбцов и разделителей (,) . Подскажите пожалуйста, как всё-таки правильно залить такой файл в эти БД?
Создаем файл csv-2-dsv.php
<?php
while(($data = fgetcsv(STDIN)) !== false) {
fputcsv(STDOUT, $data, $argv[1] ? $argv[1] : ";", '"');
}
Теперь с помощью его конвертируем:
cat data.csv | php csv-2-dsv.php ";" > out.csv
Последний параметр ";" - разделитель в выходном файле.
Входим в оболочку SQLite
sqlite3 test
Выполяем импорт в таблицу test
.import out.csv test
MySQL
LOAD DATA INFILE '/path/file.csv' INTO TABLE `table` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости