SQLiteコマンドラインインターフェイスには、.mode
と呼ばれる便利なドットコマンドがあります。 、クエリ結果のフォーマット方法を変更できます。
このコマンドで使用できる値の1つは、insert
です。 。この値を使用すると、後続のすべてのクエリ結果がSQL INSERT
としてフォーマットされます。 ステートメント。
SQLiteのデフォルト設定
まず、通常の結果は次のようになります(SQLiteのデフォルト設定を使用していると仮定します)。
SELECT * FROM Products;
結果:
1|Widget Holder|139.5 2|Widget Opener|89.7 3|Widgets - 6 Pack|374.2 4|Blue Widget|63.0
INSERTステートメントとしての結果
次に、結果がSQL INSERT
としてフォーマットされるように変更する方法を説明します。 ステートメント:
.mode insert Products2
そのステートメントはProducts2を指定します データが挿入されるテーブルとして。データを挿入するテーブルの名前を指定する必要があります。
前のSELECT
を実行すると ステートメントも、INSERT
として出力されます ステートメント。
SELECT * FROM Products;
結果:
INSERT INTO Products2 VALUES(1,'Widget Holder',139.49999999999999999); INSERT INTO Products2 VALUES(2,'Widget Opener',89.700000000000002838); INSERT INTO Products2 VALUES(3,'Widgets - 6 Pack',374.19999999999998862); INSERT INTO Products2 VALUES(4,'Blue Widget',63.000000000000000001);
この形式を保存
新しいターミナルウィンドウでSQLiteを開くと、これらの設定は失われます。つまり、SQLiteはデフォルトの出力形式(パイプで区切られたリスト)に戻ります。
ただし、上記の設定をテキストファイルに保存することで、実際に独自のデフォルト設定を指定できます。
これを行うには、テキストファイルに次のように入力します。
.mode insert NewTable
次に、そのファイルを.sqliterc
として保存します /(ユーザーの)ホームディレクトリにあります。
これで、新しいターミナルウィンドウでSQLiteに接続すると、デフォルトのSQLite設定の代わりにそれらの設定が使用されます。
この例では、ターゲットテーブルとしてNewTableを使用していますが、好きなものを使用できます。
明らかに、これを行う際の唯一の問題は、テーブルが変更された場合にテーブルの名前を変更する必要があることです。そして、それを行うのに苦労する必要がある場合は、.mode insert NewTable
を使用してその場で変更する方が簡単な場合があります。 (テーブル名を検索/置換する必要はありません)。いずれにせよ、必要に応じてオプションです。