私は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 2008にExcelデータをインポートする
- 2. SSISを使用してSQL Server間でデータをコピーする
- 3. SQL ServerからMysqlにデータをコピー
- 4. SQL Server 2014からExcelにデータをエクスポート
- 5. Excel SQL Serverのデータ接続
- 6. ウェブサイトから特定のデータをコピーしてExcelにコピーする
- 7. SQL Server - ステージングテーブルからデータをコピー
- 8. Excel 2007にSQL Server 2008 R2のデータベースの変更について通知する
- 9. C#を使用してExcel 2007でExcel 2007のSQL Serverデータをインポート
- 10. SQL Serverのデータベースチューニングアドバイザはデータを変更しますか?
- 11. SQL Server 2008のテーブル列のデータ型を変更します
- 12. C#でSQL ServerデータをExcelファイルにエクスポートする方法
- 13. ExcelをSQL Server 2008にインポート
- 14. SQLクエリアナライザを使用してSQL Server 2000のDTS(データ変換サービス)オプションを変更する
- 15. Sqlbulkuploadを使用してExcelをSQL Server 2005にインポートする
- 16. SSIS MySQLテーブルをSQL Serverにコピーする
- 17. alter tableのSQL Serverのパフォーマンス列の変更の変更データ型
- 18. スクリプトを使用してSQL Server認証モードを変更する
- 19. Sql Server変更を選択
- 20. Excelは常にhtmlシートをコピーするときにデータを日付に変更します
- 21. SQL Server:ある列から別の列にデータをコピーしますか?
- 22. スクリプトを使用してSQL Server DBをコピーする
- 23. プログラムによってExchange Serverのデータを変更する
- 24. Excel形式のデータをテーブルにコピーしていない
- 25. DB2 - SQLデータを変更します
- 26. SQL Server 2008のデータ列をvarchar(max)からnvarchar(max)に変更する
- 27. C#とエンティティフレームワークを使用して、あるSQL Serverから別のSQL Serverにレコードセットをコピーする
- 28. Excelフロントエンドto SQL Server
- 29. Visual Studio 2008を使用してSQL Serverテーブルに内容をExcel
- 30. データを使用してMySqlデータベースをMS SQL Server 2005に変換しますか?
インポートする前に、ファイルの検証を行うことが可能であるようなので、それが見えます。 –
はい、自分のデータセットプロバイダを使用して自分で作成しましたが、このツールを使用すると簡単になります。検証後、同じDataSetテーブルを使用してインポートを実行するか、別のSqlBulkCopyを使用して直接ファイルを処理できます。 – PinnyM
ありがとうございます。一括挿入が失敗した場合にどのローがエラーを起こしているかを知る方法はありませんか? –