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

mysqlで一括コピーを行うことは可能ですか?

    次のように、単一のSQLステートメントを使用して複数の行を挿入できます。

    INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
    

    更新:

    MarkRは彼のコメントにぴったりです。ユーザーからデータを収集している場合、または情報をコンパイルしている場合は、次のように動的にクエリを作成できます。

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.Append("INSERT INTO myTable (col1, col2, col3) VALUES ");
    for(int i=0;i<myDataCollection.Count;i++) {
      stringBuilder.Append("(" + myDataCollection[i].Col1 + ", " + myDataCollection[i].Col2 + ", " + myDataCollection[i].Col3 + ")");
      if (i<myDataCollection.Count-1) {
        stringBuilder.Append(", ");
      } else {
        stringBuilder.Append(";");
      }
    }
    
    string insertStatement = stringBuilder.ToString();
    

    注意すべき2つの重要なポイント:

    1. ユーザーからの入力を受け入れる場合、それは非常に重要です すべてのユーザー入力をサニタイズします。そうしないと、悪意のあるユーザーがデータベース全体を変更/削除/削除する可能性があります。詳細については、Googleの「SQLインジェクション」をご覧ください。
    2. 文字列プリミティブを使用して単純に追加するのではなく、StringBuilderクラスを使用しています(つまり、string s ="Insert ..."; s + ="blah blah blah")。配列として扱われないため、追加するときにサイズを変更する必要はありません。


    1. Snow Leopard + Ruby 1.9.1 + MySQLGem=大きな問題

    2. d3ビジュアライゼーションでのMySQLデータベースへのアクセス

    3. MySQL:今週のレコードを選択する方法は?

    4. mySQLで列名を動的に選択する方法