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

MySQLデータベースに行を挿入する最も効率的な方法

    これが私の「複数の挿入」コードです。

    10万行の挿入には、40秒ではなく3秒しかかかりませんでした !!

    public static void BulkToMySQL()
    {
        string ConnectionString = "server=192.168.1xxx";
        StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES ");           
        using (MySqlConnection mConnection = new MySqlConnection(ConnectionString))
        {
            List<string> Rows = new List<string>();
            for (int i = 0; i < 100000; i++)
            {
                Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test")));
            }
            sCommand.Append(string.Join(",", Rows));
            sCommand.Append(";");
            mConnection.Open();
            using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection))
            {
                myCmd.CommandType = CommandType.Text;
                myCmd.ExecuteNonQuery();
            }
        }
    }
    

    作成されたSQLステートメントは次のようになります:

    INSERT INTO User (FirstName, LastName) VALUES ('test','test'),('test','test'),... ;
    

    更新 :ありがとう Salman A MySQLHelper.EscapeStringを追加しました パラメータを使用するときに内部的に使用されるコードインジェクションを回避するため。



    1. MariaDBでのTAN()のしくみ

    2. max_allowed_pa​​cketmysql変数を確認および設定する方法

    3. mysqlselectqueryで2つの日付の間の日付のリストを取得する方法

    4. カンマ区切り値を含む列の値