MySQL および Oracle のバッチ挿入 SQL の一般的な記述例

MySQL および Oracle のバッチ挿入 SQL の一般的な記述例

例えば:

次に、データベースのUSERテーブルにUserオブジェクトをバッチで追加する必要があります。

パブリッククラスUser{
    //名前プライベート文字列名;
    //Ageprivate 整数年齢;
    //Genderprivate 整数の性別
}

ほとんどの人は MySQL に精通しており、バッチ追加 SQL はこのように記述されると考えるかもしれませんが、そうではありません。この書き込み方法は MySQL では問題ありませんが、Oracle ではエラーが発生します。

MySQL の書き込み:

ユーザーに挿入 
    (名前、年齢、性別)
価値観
('val1_1'、'val1_2'、'val1_3')、
('val2_1'、'val2_2'、'val2_3')、
('val3_1'、'val3_2'、'val3_3');

Oracle の書き込み:

// 複数の単一挿入 INSERT INTO USER (NAME,AGE,SEX) VALUES ('val1_1', 'val1_2', 'val1_3');
USER (NAME,AGE,SEX) に VALUES ('val2_1', 'val2_2', 'val2_3') を挿入します。
USER (NAME,AGE,SEX) に VALUES ('val3_1', 'val3_2', 'val3_3') を挿入します。

//バッチ挿入 INSERT ALL
   USER (NAME,AGE,SEX) 値 ('val1_1', 'val1_2', 'val1_3') に代入
   USER (NAME,AGE,SEX) 値 ('val2_1', 'val2_2', 'val2_3') に代入
   USER (NAME,AGE,SEX) 値 ('val3_1', 'val3_2', 'val3_3') に代入
デュアルから 1 つを選択します。

どちらの Oracle 書き込み方法も比較的面倒であり、バッチ挿入では挿入される列名の数がまったく減らないことがわかります。さらに、もう 1 つの厄介な点は、企業開発では、ソフトウェア システムが複数のデータベースをサポートする必要があることです。そのため、この新しく追加された操作は 2 つのデータベースに適応し、2 セットの SQL を維持する必要があり、開発コストが大幅に増加します。

それで、それを書くための普遍的な方法はあるのでしょうか?答えはイエスです。

一般的な執筆:

ユーザーに挿入 (名前、年齢、性別)
    デュアルユニオンすべてから ('val1_1'、'val1_2'、'val1_3') を選択
    デュアルユニオンすべてから ('val2_1'、'val2_2'、'val2_3') を選択
    デュアルから ('val3_1', 'val3_2', 'val3_3') を選択

この方法により、プロセスが簡素化され、保守する SQL セットが 1 つ減り、両方のメリットを享受できるようになります。

以下は、XML ファイルでのさまざまな書き込み方法のコードです。

<!--MySQL バッチ挿入-->
<挿入 id="batchInsertUser" データベース ID="mysql">
   ユーザーに挿入 
            (名前、年齢、性別)
   価値観
    <foreach コレクション="userList" インデックス="インデックス" 項目="ユーザー" セパレーター=",">
            (#{ユーザー名},#{ユーザーの年齢},#{ユーザーの性別})
  </foreach>
</挿入>
<!--Oracle バッチ挿入-->
<挿入 id="batchInsertUser" データベース ID="oracle">
  始める
  <foreach コレクション="userList" インデックス="インデックス" 項目="ユーザー" セパレーター=";">
   ユーザーに挿入 
            (名前、年齢、性別)
   価値観
            (#{ユーザー名},#{ユーザーの年齢},#{ユーザーの性別})
  </foreach>
  ;終わり;
</挿入>

MySQL は上記の VALUES の後の複数のデータの直接挿入をサポートしているため、MySQL と Oracle の書き込み方法を注意深く観察してください。 foreach タグは、VALUES () の後の内容のみをループする必要があります。Oracle はこの書き込み方法をサポートしていないため、INSERT 文全体をループする必要があります。

<!--一般的なバッチ挿入-->
<挿入 id="batchInsertUser" データベース ID="mysql">
   ユーザーに挿入 
            (名前、年齢、性別)
  <foreach collection="userList" index="index" item="user" Separator="union all">
     選択
            (#{ユーザー名},#{ユーザーの年齢},#{ユーザーの性別})
     デュアルから
  </foreach>
</挿入>

要約する

これで、MySQL と Oracle のバッチ挿入 SQL の一般的な記述方法についての記事は終了です。MySQL と Oracle のバッチ挿入 SQL に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Oracle を MySQL に置き換える際の問題と解決策
  • MySQLからOracleへのリアルタイムデータ同期

<<:  ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

>>:  Linux学習におけるmkdirコマンドの詳しい説明

推薦する

CSS3のtransform属性で実装される4つの機能

CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...

Centos8 システムの VMware インストール チュートリアル図 (中国語グラフィカル モード)

目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...

スクロールバーを非表示にしてコンテンツをスクロールする CSS サンプルコード

序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...

Vue で lodop 印刷コントロールを使用してブラウザ互換の印刷を実現する方法

序文このコントロールを直接印刷すると下部に透かしが入りますが、公式 Web サイトから購入することで...

MySQLの日付と時刻関数の使用の概要

この記事はMySQL 8.0に基づいていますこの記事では、日付と時刻の操作のための MySQL 関数...

SQL文におけるGROUP BYとHAVINGの使用に関する簡単な説明

GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...

ウェブデザインと制作の一般的な原則をまとめる

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

Reactでのイベントバインディングの実装は3つの方法を指しています

1. 矢印関数1. 矢印関数自体はこれをバインドしないという事実を利用します。 2. render(...

vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード

要件: データをリスト形式で表示する場合、表示すべき情報項目が多く、表が横に長くなってしまいます。表...

Vue3.0のさまざまなリスニング方法の包括的な概要

目次リスナー1.ウォッチエフェクト2.見る1.1 聴くための最初の方法1.2 聞く2つ目の方法1.3...

APPログインインターフェースシミュレーション要求を実装するためのPostmanデータ暗号化と復号化

目次主に使用されるPostmanの機能データの暗号化と復号化さまざまなパラメータ設定実際に送信された...

スクロールラグの問題を解決するためのオーバーフロースクロールの詳細な説明

序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...

JS配列インデックス検出におけるデータ型の問題の詳細な説明

WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...

テーブルを使用する場合と CSS を使用する場合 (経験の共有)

TW のメインテキスト ページは、以前は小さなモニターと低解像度のユーザーを考慮して幅が 850 ピ...

Docker実践: Pythonアプリケーションのコンテナ化

1. はじめにコンテナはサンドボックス メカニズムを使用して相互に分離します。コンテナ内にデプロイさ...