현재 프로젝트의 일부에는 120,000 개 이상의 레코드가 포함 된 큰 SQL 테이블에서 Excel 워크 시트를 채우는 작업이 포함됩니다. 현재 while 루프에서 SqlDataReader를 사용하여 새 Excel 시트를 직접 채우고 있지만 분명히 비현실적인 시간이 필요합니다. StringBuilder로 로컬 .CSV 파일 만들기 다음 Excel에서 여는이 더 빠른 옵션 인 것 같습니다. 1000 개 정도의 행마다 파일에 데이터를 덤프하거나 한꺼번에 쓸 수 있습니까? 아니면 내가 고려하지 않은이 데이터를 가져 오는 더 효율적인 방법이 있습니까?큰 SQL 쿼리를 Excel로 이동
데이터 집합은 사용자 입력에 따라 다르므로 기존 파일에 단순히 추가 할 수 없습니다.
현재 코드 : C#에서 DocumentFormat.OpenXml.Spreadsheet
를 사용
SqlConnection cnnct = new SqlConnection("Data Source=Source;Initial Catalog=Catalog;Integrated Security=True;");
cnnct.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnnct;
string cmdText = "SELECT * FROM TABLE";
cmd.CommandText = cmdText;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
columnChar = 'A';
rowCount++;
cellName = columnChar.ToString() + rowCount.ToString();
ws.get_Range(cellName, cellName).Value2 = dr["EXAMPLE_FIELD"].ToString();
columnChar++;
//The above three lines are identical for each field (there are 26)
}
무엇을 시도 했습니까? 다양한 옵션을 시도하기위한 성능 테스트가 있습니까? 표시된 코드는 CSV 파일을 작성하는 것과 아무런 관련이 없습니다. –
초기 게시물에서 말했듯이 현재 while 루프에서 SqlDataReader를 사용하여 새 Excel 시트를 직접 채 웁니다. 나는 여러 가지 옵션을 모색 해 왔지만 CSV를 만들기 전에 외부의 의견을 구하고 있습니다. 나는 코드 예제를 찾고 있지 않다. 좀 더 효율적인 대안이 있을지 궁금하다. – ti30xa