回答:
SQLファイルからインポートするには、以下を使用します。
sqlite> .read <filename>
CSVファイルからインポートするには、ファイルタイプと宛先テーブルを指定する必要があります。
sqlite> .mode csv <table>
sqlite> .import <filename> <table>
次のようなコマンドから実行してみてください:
cat dump.sql | sqlite3 database.db
これは明らかに、dump.sql内のSQLステートメントでのみ機能します。CSVをインポートする方法がわかりません。
.mode csv
sqlite3 database.db < dump.sql
SOOOO SLOW !!! cat dump.sql | sqlite3 database.db
代わりに使用してください!:D
SQLite DBを使用したSCRATCHからCSVをテーブルにインポートするには:
sqlite3 <your_db_file_name>
*空のファイルとして作成されます。CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);
テーブルを作成し、列がファイルのデータと一致したら、上記を実行できます...
.mode csv <table_name>
.import <filename> <table_name>
sqlite3 .importコマンドは、引用符で囲まれた文字列でもカンマを区切り文字として扱うため、通常のcsvデータでは機能しません。
これには、シェルによって作成されたcsvファイルの再インポートが含まれます。
Create table T (F1 integer, F2 varchar);
Insert into T values (1, 'Hey!');
Insert into T values (2, 'Hey, You!');
.mode csv
.output test.csv
select * from T;
Contents of test.csv:
1,Hey!
2,"Hey, You!"
delete from T;
.import test.csv T
Error: test.csv line 2: expected 2 columns of data but found 3
csvをInsertステートメントのリストに変換する必要があるようです。そうしないと、別の区切り文字が機能する可能性があります。
SuperUserで、LogParserを使用してcsvファイルを処理するように提案されたので、それを調べます。
(python)スクリプトを使用してよろしければ、https://github.com/rgrp/csv2sqliteにこれを自動化するpythonスクリプトがあります。
これにより、テーブルが自動的に作成され、基本的な型の推測とデータのキャストが行われます(たとえば、何かが数値であることがわかり、列の型が「実数」に設定されます)。
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings
#csv2sqlite.py {csv-file-path} {sqlite-db-path} [{table-name}]
SQLiteのデフォルトの区切り文字はパイプ「|」であることに注意してください
sqlite> .separator ";"
sqlite> .import path/filename.txt tablename
http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010
SQLiteは、SQL構文でSQLite固有のドットコマンドも使用できるため、非常に柔軟性があります(ただし、CLIによって解釈されます)。これは、このようなことを実行できることを意味します。
次のsms
ようなテーブルを作成します。
# sqlite3 mycool.db '.schema sms'
CREATE TABLE sms (_id integer primary key autoincrement, Address VARCHAR, Display VARCHAR, Class VARCHAR, ServiceCtr VARCHAR, Message VARCHAR, Timestamp TIMESTAMP NOT NULL DEFAULT current_timestamp);
次に2つのファイル:
# echo "1,ADREZZ,DizzPlay,CLAZZ,SMSC,DaTestMessage,2015-01-24 21:00:00">test.csv
# cat test.sql
.mode csv
.header on
.import test.csv sms
SQLファイルを使用してCSVファイルのインポートをテストするには、次のコマンドを実行します。
# sqlite3 -csv -header mycool.db '.read test.sql'
結論として、これは、.import
MySQLのような他のRDBと同じように、SQLite SQLでステートメントを使用できることを意味しますLOAD DATA INFILE
。ただし、これは推奨されません。
termsqlを確認してください。https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home
コマンドラインでテキストをSQLに変換します。(CSVは単なるテキストです)
例:
cat textfile | termsql -o sqlite.db
デフォルトでは区切り文字は空白なので、カンマを使用しているCSVで機能させるには、次のようにします。
cat textfile | termsql -d ',' -o sqlite.db
あるいは、これを行うことができます:
termsql -i textfile -d ',' -o sqlite.db
列名の最初の行を使用する場合は、デフォルトで列名「COL0」、「COL1」を生成します。
termsql -i textfile -d ',' -1 -o sqlite.db
カスタム列名を設定する場合は、次のようにします。
termsql -i textfile -d ',' -c 'id,name,age,color' -o sqlite.db
これは、ID列に挿入する方法です。
CREATE TABLE my_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name COLLATE NOCASE);
CREATE TABLE temp_table (name COLLATE NOCASE);
.import predefined/myfile.txt temp_table
insert into my_table (name) select name from temp_table;
myfile.txtはC:\ code \ db \ predefined \にあるファイルです
data.dbはC:\ code \ db \にあります
myfile.txtには、改行文字で区切られた文字列が含まれています。
さらに列を追加する場合は、デフォルトのパイプ文字を使用して列を分離する方が簡単です。
phpLiteAdminを使用してcsvまたはsqlをsqliteにインポートします。優れています。