116

.sqlまたは.csvファイルを SQLiteにダンプする必要があります (SQLite3 API を使用しています)。データベース全体ではなく、テーブルのインポート/ロードに関するドキュメントのみを見つけました。今、私が入力すると:

sqlite3prompt> .import FILENAME TABLE 

DB全体ではなくテーブルを想定しているため、構文エラーが発生します。

4

11 に答える 11

166

SQL ファイルからインポートするには、次を使用します。

sqlite> .read <filename>

CSV ファイルからインポートするには、ファイルの種類と宛先テーブルを指定する必要があります。

sqlite> .mode csv <table>
sqlite> .import <filename> <table>
于 2009-06-25T20:08:32.223 に答える
26

次のようなコマンドから実行してみてください。

cat dump.sql | sqlite3 database.db

これは明らかに、dump.sql 内の SQL ステートメントでのみ機能します。CSV のインポート方法がわかりません。

于 2009-06-25T19:59:11.433 に答える
22

SQLite DBを使用したSCRATCHからCSVをテーブルにインポートするには、次のようにします。

  • WebサイトからSQLiteを入手してください。
  • コマンドプロンプトで実行sqlite3 <your_db_file_name>*空のファイルとして作成されます。
  • 新しいデータベースに新しいテーブルを作成します。テーブルは、インポートするCSVフィールドと一致する必要があります。
  • これは、SQLコマンドで行います。CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);

テーブルを作成し、列がファイルのデータと一致したら、上記を実行できます...

.mode csv <table_name>
.import <filename> <table_name>
于 2009-11-18T18:20:16.657 に答える
11

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 ファイルを処理するという提案を見たので、それを調べます。

于 2010-02-22T23:10:36.223 に答える
2

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
于 2014-11-22T13:40:22.880 に答える
1

Windowsで使用している場合は、「」にdbへのパスを追加し、パスに二重スラッシュ\を使用して、Windowsがそれを理解できるようにしてください。

于 2016-08-18T14:09:31.033 に答える
1

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'

結論として、これは、.importMySQL などの他の RDB で使用できるのと同じように、SQLite SQL でステートメントを使用できることを意味しますLOAD DATA INFILE。ただし、これはお勧めしません。

于 2015-01-24T19:40:30.590 に答える