2013-03-10 1 views
7

У меня есть простые текстовые файлы, содержащие только нормальные тексты.Загружать содержимое в текстовые файлы в таблицу sqlite?

Мне было интересно, есть ли способ загрузить содержимое текста в таблицу в sqlite.

Возможно, я мог бы создать таблицу myTable (nameOfText TEXT, содержание TEXT);

И затем поместите имя текста в первый столбец и содержимое во второй столбец.

Если положить имя файла сложно, загрузка содержимого в одну таблицу столбцов будет такой же хорошей.

Любое предложение будет оценено.

спасибо !!

+0

И какой формат имеет текстовый файл? –

ответ

2

termsql - это инструмент, который может конвертировать текст из файла или выход программы (stdin) «на лету» в базу данных sqlite.

termsql -c nameOfText,contents -i input.txt -o myDB.db 

Это создаст таблицу со столбцами nameOfText и содержимым. Для каждой строки в input.txt одна строка будет вставлена ​​в myDB.db.

Вы не сообщили нам о разделителе nameOfText, и контекст отделен. По умолчанию defaultql предполагает, что пробел является разделителем. Но должно ли это быть '' например, тогда вы могли бы сделать что-то вроде этого:

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db 

Вы можете получить termsql здесь: https://gitorious.org/termsql https://freecode.com/projects/termsql

Termsql имеет другие usecases тоже. Вы можете выполнять инструкции SQL в новой базе данных в одной команде. В следующем примере вы создадите свою базу данных и вернете столбец nameOfText в командной строке для всех строк, где столбец содержимого содержит строку «test».

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db "select nameOfText from tbl where contents like '%test'" 
+0

Ссылки не работают - представляется из [здесь] (https: // github.com/tobimensch/termsql). Хотя я не понимаю, почему это предпочтительнее просто делать 'create table ...; .import ... ', как описано ниже, а затем запускается как сценарий' sqlite3 myDB.db '.read. to_table.sql. ' – JohnSG

15

Скажите у вас есть файл text.txt формата CSV:

name1,content1 
name2,content2 

Попробуйте команды ниже, чтобы импортировать данные в test.txt в таблицу

D:\test>sqlite3 test.db 
SQLite version 3.6.23 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> create table myTable(nameOfText TEXT, contents TEXT); 
sqlite> .separator "," 
sqlite> .import test.txt myTable 
sqlite> select * from myTable; 
name1,content1 
name2,content2 
sqlite> 

изменить разделитель используется в ваш текстовый файл с командой .separator перед импортом данных.

+0

'.separator ","' не работает –

2

Функция readfile считывает содержимое файла и возвращает его содержимое в виде BLOB. Эта функция доступна при использовании командной строки. Например:

sqlite> CREATE TABLE files(name TEXT, content TEXT); 
sqlite> INSERT INTO files(name,content) VALUES('a.txt',readfile('a.txt')); 

Документация для этой функции и writefile доступна на http://www.sqlite.org/cli.html.

+0

. Обратите внимание, что функции readfile (X) и writefile (X, Y) являются функциями расширения и не встроены в основную библиотеку SQLite. –

Смежные вопросы