sql >> データベース >  >> RDS >> SQLite

SQLiteクエリ結果をINSERTステートメントとして出力する

    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を使用してその場で変更する方が簡単な場合があります。 (テーブル名を検索/置換する必要はありません)。いずれにせよ、必要に応じてオプションです。


    1. ユーザー入力に依存する長いクエリに対してPHPでMySQLエラーを表示するにはどうすればよいですか?

    2. 実行中のSELECTステートメントを強制終了する方法

    3. Microsoft Accessデータベースを分割するとはどういう意味ですか?

    4. Mac OS XにMySQLdb(MySQLへのPythonデータアクセスライブラリ)をインストールするにはどうすればよいですか?