[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
質問
MySQLでは、このように複数行を挿入することができます。
INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2');
しかし、このようなことをしようとすると、エラーが発生します。SQLiteデータベースで、一度に複数行を挿入することは可能でしょうか?そのための構文は何でしょうか?
解決方法を教えてください。
更新
として BrianCampbellがここで指摘しているのは , SQLite 3.7.11 以降では、元記事のシンプルな構文がサポートされるようになりました。 . しかし、レガシーデータベースとの互換性を最大限に高めたい場合は、この方法が適切です。
オリジナル回答
もし私に特権があれば、ぶつけたい 川さんの返信 : あなた 可 SQLite で複数行の挿入を行うには、単に 別の構文 . 完璧に理解するために、OPのMySQLの例。
INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2');
これをSQLiteに直すと次のようになります。
INSERT INTO 'tablename'
SELECT 'data1' AS 'column1', 'data2' AS 'column2'
UNION ALL SELECT 'data1', 'data2'
UNION ALL SELECT 'data1', 'data2'
UNION ALL SELECT 'data1', 'data2'
パフォーマンスに関するメモ
私はもともと、Ruby on Railsから大きなデータセットを効率的に読み込むために、このテクニックを使っていました。
しかし
,
Jaime Cookが指摘するように
を個別にラップする方が速いというのは明らかではありません。
INSERTs
を1つのトランザクションで実行します。
BEGIN TRANSACTION;
INSERT INTO 'tablename' table VALUES ('data1', 'data2');
INSERT INTO 'tablename' table VALUES ('data3', 'data4');
...
COMMIT;
効率が目的なら、まずこれを試すべきでしょう。
UNIONとUNION ALLに関する注意点
何人かの人がコメントしているように、もしあなたが
UNION ALL
(上記のように)すべての行が挿入されるので、この場合、4行の
data1, data2
. を省略した場合
ALL
の場合、重複した行は排除されます(そして、おそらく動作は少し遅くなります)。 UNION ALLを使うのは、この方が元の投稿のセマンティクスに近いからです。
最後に
追伸:+1してください 河野の返事 解決策を最初に提示しているので。
関連
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み】SQLiteの "Insert if not exists "ステートメントについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PostgreSQLのCREATE DATABASE IF NOT EXISTSをシミュレートしてみませんか?
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQLの複数列の順序付け
-
[解決済み] MySQLでFULL OUTER JOINを行うにはどうすればよいですか?
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?