Загрузить содержимое текстовых файлов в таблицу sqlite?

У меня есть простые текстовые файлы, которые содержат только обычные тексты.

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

поэтому, возможно, я мог бы создать таблицу myTable (nameOfText TEXT, contents TEXT);

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

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

любое предложение было бы оценено.

спасибо !!

3 ответов


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

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

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

вы не сказали нам о разделителе nameOfText и контекст разделены. От по умолчанию termsql предполагает, что разделителем является пробел. Но Должно ли это быть", " например, тогда вы бы сделайте что-нибудь вроде этого:

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 в командной строке для всех строк, где столбец contents содержит строку "test".

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

скажем, у вас есть текстовый файл.txt формата CSV:

name1,content1
name2,content2

попробуйте выполнить команды ниже, чтобы импортировать данные в тест.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>

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


функции 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.