0

各行のデータがMySQLデータベースの1つまたは2つのテーブルに挿入または更新されるCSVファイルをユーザーがインポートできるようにするASP.Netサイトを開発しています。CSV ファイルの行数は 1 ~ 数千行で、幅は約 6 ~ 7 列です。

この方法はかなり遅いように思われるため、SQL インジェクションから保護しながら、各行をループせずにストアド プロシージャを呼び出すことができるかどうか疑問に思っていました。また、これが起こっている間、これにより私のサイトが現在のすべてのユーザーに応答しなくなるのではないかと思っていましたか?

前もって感謝します

4

2 に答える 2

0

はい、これを行う最良の方法は、ASP.NETSqlBulkCopyを使用して一時テーブルにインポートすることです。

次に、TSQLを使用して宛先テーブルにコピーします。

csvをDataTableにロードします。

これがあなたが必要とするコードです

接続をSqlConnectionとして使用=NewSqlConnection(conn)

        connection.Open()

        Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connection, SqlBulkCopyOptions.TableLock, Nothing)

                bulkCopy.DestinationTableName = "TempTable"

            bulkCopy.BulkCopyTimeout = 60000

            bulkCopy.BatchSize = 0

            bulkCopy.WriteToServer(MyDataTable)

            bulkCopy.Close()

        End Using

        connection.Close()

        End Using
于 2012-04-25T18:37:43.403 に答える
-1
MySqlBulkLoader loader = new MySqlBulkLoader(connection);
loader.TableName = "table name";
loader.FieldTerminator = "\t";
loader.LineTerminator = "\n";
loader.FileName = "path file";
loader.Load();
于 2015-11-24T14:41:18.380 に答える