Чтобы создать два csv-файла:
echo -e "123\n456" > t0.txt
echo -e '"foo","bar"\n"foo\"bar\"","baz"' > t1.txt
Теперь я хочу добавить столбцы в t1.txt
к t0.txt
, чтобы результат стал следующим:
123,"foo","bar"
456,"foo\"bar\"","baz"
Сначала попробуйте, используя csvtool
csvtool paste t0.txt t1.txt
Fatal error: exception Csv.Failure(2, 1, "Bad '"' in quoted field")
Итак, csvtool
, похоже, не обрабатывает экранированную кавычку в "foo\"bar\""
.
Мой реальный мирВариант использования имеет два CSV-файла с +150.000.000 строк и 11 столбцов, поэтому мне нужен инструмент, который может выполнить задачу без одновременного хранения всех данных в оперативной памяти.
Можно ли использовать csvtool с экранированными кавычками или есть другой инструмент, который мог бы решить эту проблему?
Конечной целью для CSV-файла является база данных в mariadb
, поэтому эффективнаяимпорт в mariadb
с использованием t0.txt
и t1.txt
напрямую был бы еще лучше, но, насколько я знаю, LOAD DATA INFILE
работает только с одним CSV-файлом.
Я определенно предпочитаю готовыйинструмента, но если его нет, то некоторые фрагменты C, Perl или Python также будут оценены.