.NET/C#에서 액세스하기 위해 많은 수의 레코드 쓰기(대량 삽입)
문제: ADO.NET을 사용하여 Access 데이터베이스에 대규모 데이터 세트를 추가하는 것은 시간이 많이 걸립니다.
해결책:
DAO를 사용하면 Access에 대량 삽입 시 ADO.NET에 비해 상당한 속도 이점이 있습니다.
1 . 필드 변수를 사용한 DAO(2.8초):
DAO.Field[] myFields = new DAO.Field[20]; for (int k = 0; k < 20; k++) myFields[k] = rs.Fields["Field" + (k + 1).ToString()]; for (int i = 0; i < 100000; i++) { rs.AddNew(); for (int k = 0; k < 20; k++) { myFields[k].Value = i + k; } rs.Update(); }
2. 컬럼 인덱스를 이용한 DAO (11.0초):
for (int i = 0; i < 100000; i++) { rs.AddNew(); for (int k = 0; k < 20; k++) { rs.Fields[k].Value = i + k; } rs.Update(); }
3. 컬럼명을 이용한 DAO (17.0초):
for (int i = 0; i < 100000; i++) { rs.AddNew(); for (int k = 0; k < 20; k++) { rs.Fields["Field" + (k + 1).ToString()].Value = i + k; } rs.Update(); }
4. INSERT 문을 사용하는 ADO.NET(79.0초):
for (int i = 0; i < 100000; i++) { StringBuilder insertSQL = new StringBuilder("INSERT INTO TEMP (") .Append(names) .Append(") VALUES ("); for (int k = 0; k < 19; k++) { insertSQL.Append(i + k).Append(","); } insertSQL.Append(i + 19).Append(")"); cmd.CommandText = insertSQL.ToString(); cmd.ExecuteNonQuery(); }
5. DataTable 및 DataAdapter를 사용하는 ADO.NET(86.0초):
for (int i = 0; i < 100000; i++) { DataRow dr = dt.NewRow(); for (int k = 0; k < 20; k++) { dr["Field" + (k + 1).ToString()] = i + k; } dt.Rows.Add(dr); } da.Update(dt);
6. 자동화 가져오기가 포함된 텍스트 파일(2.8초):
데이터를 텍스트 파일로 내보내고 Access Automation을 사용하여 가져옵니다(대규모 데이터 세트에는 권장되지 않음):
StreamWriter sw = new StreamWriter(Properties.Settings.Default.TEMPPathLocation); for (int i = 0; i < 100000; i++) { for (int k = 0; k < 19; k++) { sw.Write(i + k); sw.Write(","); } sw.WriteLine(i + 19); } sw.Close(); ACCESS.Application accApplication = new ACCESS.Application(); accApplication.OpenCurrentDatabase(databaseName, false, ""); accApplication.DoCmd.RunSQL("DELETE FROM TEMP"); accApplication.DoCmd.TransferText(TransferType: ACCESS.AcTextTransferType.acImportDelim, TableName: "TEMP", FileName: Properties.Settings.Default.TEMPPathLocation, HasFieldNames: true); accApplication.CloseCurrentDatabase(); accApplication.Quit(); accApplication = null;
위 내용은 .NET/C#을 사용하여 Access 데이터베이스에 빠르게 대량 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!