このメソッドを使用してSQLにデータをアップロードしています。C#windowsフォームアプリケーションを使用してExcel(.CSV)ファイルからSQLにデータをアップロード
private void button5_Click(object sender, EventArgs e)
{
string filepath = textBox2.Text;
string connectionString_i = string.Format(@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""", Path.GetDirectoryName(filepath));
using (OleDbConnection connection_i = new OleDbConnection(connectionString_i))
{
connection_i.Open();
OleDbCommand command = new OleDbCommand ("Select * FROM [" + Path.GetFileName(filepath) +"]", connection_i);
command.CommandTimeout = 180;
using (OleDbDataReader dr = command.ExecuteReader())
{
string sqlConnectionString = MyConString;
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
bulkInsert.BulkCopyTimeout = 180;
bulkInsert.DestinationTableName = "Table_Name";
bulkInsert.WriteToServer(dr);
MessageBox.Show("Upload Successful!");
}
}
connection_i.Close();
}
}
Excelシートは、.CSV
という形式で約1,048,313エントリあります。その一括コピー方法は、約36000から60000のエントリで動作しています。 Excelから最初の30000エントリを選択してSQL Serverテーブルにアップロードし、次に30000行の次のチャンクを選択してSQL Serverにアップロードするなどの方法があるかどうかを尋ねますが保存されています。
うん.. 'csv'は非常にシンプルな形式です。ファイルリーダーでファイルを操作する方がはるかに簡単ですか? (毎回次の30000行を読むだけです) – ymz
新しいテーブルを毎回作成しなければならないのですが、既存のテーブルを更新する必要があります。もし何とか接続が解除されたり、何らかのエラーが発生した場合は、すべての現在の変更も戻って.. ..その問題。 –