Я пытаюсь импортировать файл csv в таблицу SQLite.
Пример csv:
1,2
5,6
2,7
Пример команды:
sqlite> create table foo(a, b);
sqlite> separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4
Я даже не уверен, почему он найдет четыре столбца с шестью частями данных и двумя столбцами. Любая помощь?:)
Что также говорится в комментариях, SQLite видит ваши данные как 1, 25, 62, 7. У меня также была проблема, и в моем случае это было решено путем изменения "разделителя" на ".mode csv". Поэтому вы можете попробовать:
sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo
create table
и sqlite будет использовать имена столбцов из CSV-файла.
Вот как я это сделал.
Введите оболочку sqlite db, к которой необходимо добавить данные.
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes
sqlite> .import afile.csv tablename-to-import-to
.separator "\t" "\r"
Я собираю информацию из предыдущих ответов здесь с моим собственным опытом. Самый простой способ - добавить заголовки таблиц, разделенные запятыми, непосредственно в ваш файл csv, а затем новую строку, а затем все ваши данные csv.
Если вы никогда не будете делать sqlite вещи снова (как я), это может спасти вас веб-поиск или два:
В оболочке Sqlite введите:
$ sqlite3 yourfile.sqlite
sqlite> .mode csv
sqlite> .import test.csv yourtable
sqlite> .exit
Если у вас нет Sqlite, установленного на вашем Mac, запустите
$ brew install sqlite3
Возможно, вам понадобится сделать один веб-поиск, как установить Homebrew.
unescaped " character
оповещения?
перед командой .import введите ".mode csv"
С termql вы можете сделать это в одной строке:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
У меня была точно такая же проблема (в OS X Maverics 10.9.1 с SQLite3 3.7.13, но я не думаю, что SQLite связан с причиной). Я попытался импортировать данные csv, сохраненные из MS Excel 2011, что кстати. использует ';'
как разделитель столбцов. Я узнал, что csv файл из Excel по-прежнему использует символ новой строки из Mac OS 9 раз, заменив его на unix-newline, решив проблему. AFAIR BBEdit имеет команду для этого, а также Sublime Text 2.
tr -s '\r' '\n'
и это будет работать со всеми видами случайных файлов.
6 - 2 = 4