12

通常のテキストだけを含む単純なテキストファイルがあります。

sqliteのテーブルにテキストの内容をロードする方法があるかどうか疑問に思いました。

したがって、テーブルmyTable(nameOfText TEXT、contents TEXT);を作成できるかもしれません。

次に、テキストの名前を最初の列に入れ、内容を2番目の列に入れます。

ファイルの名前を入力するのが難しい場合は、コンテンツを1つの列テーブルにロードするのも同様に問題ありません。

任意の提案をいただければ幸いです。

ありがとうございました !!

4

3 に答える 3

25

CSV形式のファイルtext.txtがあるとします。

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コマンドを使用してテキストファイルで使用されている区切り文字を変更してください。

于 2013-03-10T06:26:05.483 に答える
5

termsqlは、ファイルまたはプログラム(stdin)の出力からのテキストをオンザフライでsqliteデータベースに変換できるツールです。

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

これにより、nameOfText列とcontents列を持つテーブルが作成されます。input.txtの各行について、1行がmyDB.dbに挿入されます。

区切り文字nameOfTextについては教えてくれませんでしたが、コンテキストはで区切られています。デフォルトでは、termsqlは空白が区切り文字であると想定しています。ただし、たとえば「」の場合は、次のようにします。

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

ここでtermsqlを取得できます: https ://github.com/tobimensch/termsql

Termsqlには他のユースケースもあります。新しいデータベースでSQLステートメントをすべて1つのコマンドで実行できます。次の例では、データベースを作成し、コンテンツ列に文字列'test'が含まれているすべての行のコマンドラインでnameOfText列を返します。

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db "select nameOfText from tbl where contents like '%test'"
于 2014-05-01T21:49:17.473 に答える
4

この関数readfileはファイルのコンテンツを読み取り、そのコンテンツをBLOBとして返します。この機能は、コマンドラインシェルを使用している場合に使用できます。例えば:

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

この関数のドキュメントはhttp://www.sqlite.org/cli.htmlwritefileで入手できます。

于 2015-11-19T11:53:57.127 に答える