SQLBulkCopy
에서 읽으므로 Excel 문서에서 SQL Server로 수천 개의 행을 가져 오는 데 사용하고 싶습니다. 나는 자료를 수정하지 않고 그것을 직접하는 기사를 계속 읽는다. SQLBulkCopy
을 수행하기 전에 Excel 문서의 데이터를 수정하고 유효성 검사를 수행해야합니다. 이것을 할 수 있습니까? 내가 과부하에서 데이터를 수정할 수 있고 큰 DataTable
을 만들고 그 DataTable
을 WriteToServer
으로 가져올 수 있다고 가정합니다.SQL을 사용하여 SQL Server로 SQL 대량 복사 (데이터 수정 포함)
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. MS Access에서 SQL Server로 대량 복사
- 2. sqlite에서 SQL Server로 데이터 복사
- 3. SQL 대량 복사 사용하여 데이터 액세스 블록
- 4. SQL Server에서 Oracle으로 대량 복사
- 5. 참조 무결성이있는 SQL 대량 복사
- 6. Oracle에서 SQL Server로 데이터 이동
- 7. SAP에서 SQL Server로 데이터 내보내기
- 8. SQL을 사용하여 Oracle 스키마간에 데이터 복사
- 9. Oracle에서 SQL Server로 데이터 마이그레이션
- 10. Access 데이터베이스에서 SQL Server로 테이블 복사
- 11. SSIS 패키지 만들기 - Oracle에서 SQL Server로 데이터 복사
- 12. 대량 데이터 insert sql 문제
- 13. 형식 파일 및 대량 삽입으로 SQL Server로 가져 오기
- 14. Access에서 SQL Server로 데이터 가져 오기
- 15. Oracle에서 SQL Server로 마이그레이션
- 16. PHP로 암호화하고 SQL Server로 해독
- 17. 대량 업데이트/SQL 데이터베이스에 데이터 삽입
- 18. SQL 서버 대량 복사 아웃/infgile에서 postgres 복사
- 19. Excel/CSV에서 SQL Server로 데이터 가져 오기
- 20. Advantage Database Server에서 SQL Server로 데이터 전송
- 21. SQL Server로 가져올 일정 데이터 찾기
- 22. SQL Server 2008에서 SQL Express로 데이터 복사
- 23. SQL Server 2008의 .Net 대량 복사 또는 테이블 값 매개 변수를 사용한 성능 비교 대량 삽입
- 24. MySQL 데이터베이스를 SQL Server로 마이그레이션
- 25. Excel에서 SQL Server로 일괄 삽입
- 26. SSIS를 사용하여 CSV에서 SQL Server로 가장 최근 데이터 가져 오기
- 27. ColdFusion을 사용하여 SQL Server로 액세스 데이터 가져 오기
- 28. SQL을 사용하여 두 열 사이의 데이터 복사
- 29. SQL Server에서 Oracle으로 데이터 복사
- 30. SQL 서버에서 Mysql으로 데이터 복사
그래서이 보인다. –
네,이 도구는 쉽게 사용할 수 있지만 내 자신의 DataSet 공급자를 사용하여이 작업을 직접 수행했습니다. 유효성 검사가 끝나면 같은 DataSet 테이블을 사용하여 가져 오기를 수행하거나 별도의 SqlBulkCopy를 사용하여 파일을 직접 작업 할 수 있습니다. – PinnyM
감사합니다. 벌크 삽입이 실패한 경우 어떤 행에 오류가 있는지 확인하는 방법이 없습니다. –