По работе появилась простая задача: CSV-файл вида

1
2
3
4
o_view,o_text,remap_view
01,"Сельское хозяйство, охота и предоставление услуг в этих областях",01
01.11,"Выращивание зерновых, технических и прочих сельскохозяйственных культур,
не включенных в другие группировки",01.11

надо преобразовать к виду:

1
2
3
4
5
INSERT INTO `ref_okved` (o_view, o_text, remap_view) VALUES
('01' , 'Сельское хозяйство, охота и предоставление услуг в этих областях' , '01');
INSERT INTO `ref_okved` (o_view, o_text, remap_view) VALUES
('01.11' , 'Выращивание зерновых, технических и прочих сельскохозяйственных культур,
не включенных в другие группировки' , '01.11');

Ну казалось бы, что проще - гугл, онлайн-конвертор, тысячи их, профит? А фигушки.

Один конвертор не умеет UTF-8. Другой - не понимает разделители внутри enclosure (т.е. строку 01,'Сельское хозяйство, охота и... ' , 01 он разбивает на части по запятым, совершенно игноруя тот факт, что вторая запятая вообще-то внутри кавычек).
Третий не понимает разделитель запятую и хочет точку с запятой.
Четвертый платный (или хочет регистрацию) и за раз может делать только 50 строк.
Пятый всем хорош, но не понимает кавычки как ограничитель строк.
Шестой тоже всем хорош, но не понимает 01 как строку и преобразовывает её в число…

Ах да, я не только онлайн-сервисы искал, но и в репозитории node.js рылся. Те же яйца, вид сбоку.

Короче, хочешь что-то сделать хорошо - сделай это сам:

KarelWintersky/csv2sql.php at gist.github.com

Comments