私はSQLBulkCopy
を読んでおり、ExcelドキュメントからSQL Serverに何千もの行をインポートするために使用したいと考えています。私はデータを変更せずに直接行う記事を読んでいます。 SQLBulkCopy
を実行する前に、Excelドキュメントのデータに対していくつかの変更と検証を行う必要があります。これは可能ですか?私は過負荷から、データを変更して大きなサイズのDataTable
を作成し、そのDataTable
をWriteToServer
にインポートすると仮定します。ExcelをSQL Serverにコピーしてデータを変更する
0
A
答えて
1
インポートする前に検証/変更のために反復処理できるDataReaderまたはDataSetが必要な場合があります。
このユーティリティはあなたを助けるかもしれない - http://exceldatareader.codeplex.com/
0
をこれは私のために正常に動作します:
public ActionResult Create(HttpPostedFileBase file)
{
string strConnection = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
//file upload path
var fileName = Path.GetFileName(file.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
//Create connection string to Excel work book
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
excelConnection.Open();
DataTable dt = new DataTable();
dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
return null;
}
String[] excelSheets = new String[dt.Rows.Count];
int t = 0;
//excel data saves in temp file here.
foreach (DataRow row in dt.Rows)
{
excelSheets[t] = row["TABLE_NAME"].ToString();
t++;
}
OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString);
string query = string.Format("SELECT * FROM [{0}]", excelSheets[0]);
OleDbCommand cmd = new OleDbCommand(query, excelConnection);
//excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
//Give your Destination table name
sqlBulk.DestinationTableName = "[FSM].[DFS_Akustik]";
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
ViewBag.view_dfs_akustik = dbman.View_DFS_Akustik.ToList();
return View();
}
関連する問題
- 1. SQL ServerデータをExcelにエクスポート
- 2. SQL Server 2008にExcelデータをインポートする
- 3. SSISを使用してSQL Server間でデータをコピーする
- 4. SQL ServerからMysqlにデータをコピー
- 5. SQL Server 2014からExcelにデータをエクスポート
- 6. vb.netを使用してExcelからSQL Serverにデータをインポート
- 7. Excel SQL Serverのデータ接続
- 8. SQL Server 2005からExcel 2003-2007にデータをインポートするSQLクエリ
- 9. ウェブサイトから特定のデータをコピーしてExcelにコピーする
- 10. SQL Server - ステージングテーブルからデータをコピー
- 11. ExcelでセルをコピーしてBG色を変更する
- 12. Excel 2007にSQL Server 2008 R2のデータベースの変更について通知する
- 13. VBAを使用してSQL ServerデータをExcelにエクスポートする方法は?
- 14. VBA ListColumnsを使用してExcelからMS SQL Server 2008にSQLを更新
- 15. SQL Serverプライマリキーのデータ型を変更します
- 16. SQL Serverのデータベースチューニングアドバイザはデータを変更しますか?
- 17. SQL Server 2008のテーブル列のデータ型を変更します
- 18. SQL ServerデータベースをExcelから更新
- 19. C#を使用してExcel 2007でExcel 2007のSQL Serverデータをインポート
- 20. VBAマクロを使用してSQLエラーコードをExcelにコピーする
- 21. C#を使用してCSVファイルのデータをSQL SERVERにコピーしたい。
- 22. ExcelデータをSQL Serverテーブルに挿入するバッチファイル
- 23. C#でSQL ServerデータをExcelファイルにエクスポートする方法
- 24. ExcelからSQL Serverにデータを移行する
- 25. SSIS MySQLテーブルをSQL Serverにコピーする
- 26. SQL Serverを使用して行データを列データに変換する
- 27. SQLクエリアナライザを使用してSQL Server 2000のDTS(データ変換サービス)オプションを変更する
- 28. データをコピーして行列をサイズ変更するopencv
- 29. ExcelをSQL Server 2008にインポート
- 30. Sqlbulkuploadを使用してExcelをSQL Server 2005にインポートする
インポートする前に、ファイルの検証を行うことが可能であるようなので、それが見えます。 –
はい、自分のデータセットプロバイダを使用して自分で作成しましたが、このツールを使用すると簡単になります。検証後、同じDataSetテーブルを使用してインポートを実行するか、別のSqlBulkCopyを使用して直接ファイルを処理できます。 – PinnyM
ありがとうございます。一括挿入が失敗した場合にどのローがエラーを起こしているかを知る方法はありませんか? –