Как импортировать файл в sqlite? - PullRequest
4 голосов
/ 18 января 2009

На Mac у меня есть текстовый файл с двумя столбцами, один из которых является автоинкрементом в таблице sqlite:

, "mytext1"
, "mytext2"
, "mytext3"

Когда я пытаюсь импортировать этот файл, я получаю ошибку несоответствия типов данных:

.separator ","
.import mytextfile.txt mytable

Как структурировать txt-файл, чтобы он использовал автоинкремент?

Кроме того, как мне ввести текст, который будет содержать разрывы строк? Например:

"this is a description of the code below.
The text might have some line breaks and indents.  Here's
the related code sample:

foreach (int i = 0; i < 5; i++){

  //do some stuff here

}

this is a little more follow up text."

Мне нужно, чтобы вышеперечисленное было вставлено в один ряд. Что-нибудь особенное, что мне нужно сделать для форматирования?

Для одной конкретной таблицы я хочу, чтобы каждая из моих строк была в виде файла, и импортировать их таким образом. Я предполагаю, что это вопрос создания какого-то командного файла, который выполняет несколько импортов.

Редактировать

Это именно тот синтаксис, который я написал, за исключением табуляции, поскольку я использую запятую. Отсутствующий разрыв строки в моем сообщении не сделал это очевидным. В любом случае, это дает ошибку несоответствия.

Ответы [ 3 ]

9 голосов
/ 25 января 2009

Я искал ту же проблему. Похоже, я нашел ответ на первую часть вашего вопроса - об импорте файла в таблицу с полем ID.

Так что да, создайте временную таблицу без идентификатора, импортируйте в нее свой файл, а затем вставьте .. выберите, чтобы скопировать его данные в целевую таблицу. (Удалите начальные запятые из mytextfile.txt).

-- assuming your table is called Strings and
-- was created like this:
-- create table Strings( ID integer primary key, Code text )

create table StringsImport( Code text );
.import mytextfile.txt StringsImport
insert into Strings ( Code ) select * from StringsImport;
drop table StringsImport;

Не знаю, что делать с переводом строки. Я читал некоторые упоминания о том, что импорт в режиме CSV поможет (.mode csv), но когда я попробовал, это не сработало.

0 голосов
/ 04 сентября 2012

В случае, если у кого-то все еще есть проблемы с этим, вы можете скачать менеджер SQLLite.

Есть несколько, которые позволяют импортировать из файла CSV.

Вот один, но поиск в Google должен выявить несколько: http://sqlitemanager.en.softonic.com/

0 голосов
/ 06 февраля 2010

Я в процессе перемещения данных, содержащих длинные текстовые поля с различными знаками пунктуации (на самом деле это статьи по кодированию), в SQLite, и я экспериментировал с различными импортами текста.

Я создал базу данных в SQLite с таблицей:

CREATE TABLE test (id PRIMARY KEY AUTOINCREMENT, textfield TEXT);

затем сделайте резервную копию с помощью .dump.

Затем я добавляю текст под строкой «CREATE TABLE» вручную в результирующий файл .dump следующим образом:

INSERT INTO test textfield VALUES (1,'Is''t it great to have
                     really long text with various punctaution marks and
          newlines');

Заменить любые одинарные кавычки на две одинарные (изменить «на»). Обратите внимание, что индексный номер нужно добавить вручную (я уверен, что есть команда AWK / SED, чтобы сделать это автоматически). Измените число автоинкремента в строке «sequence» в файле дампа на число, которое выше последнего добавленного вами номера индекса (у меня нет SQLite, чтобы дать вам точную строку, но это должно быть очевидно).
После этого я могу восстановить базу данных

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...