sql-server - 在 MS sql server-2008 中插入 100 万行
问题描述
我正在使用 Visual Studio 2010 将大量数据写入 sql server 2008 中的表中。但是常见的插入过程太慢并且数据丢失。我是 sql server 的新手,所以如何将 100 万行插入到 SQL Server 2008(本地数据库)中的现有表中。谢谢。
int len = arrayNo.GetSize();
for (int z=0 ;z<len;z++)
{
tmp1= arrayNo.GetAt(z);
tmp2= arrayID.GetAt(z);
tmp3= arrayDuration.GetAt(z);
tmp4= arrayState.GetAt(z);
CString str;
str.Format(_T("('%s','%s','%s',%s)"),tmp1, tmp2,tmp3,tmp4);
strQuery = _T("insert into [Zhaoyangqing].[dbo].[GameStateOutput] values ")+str;
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
}
解决方案
最简单的改进是将插入包装到事务中。这样,SQL Server 就不必在每一行之后刷新日志文件。
也许是这样的:
strQuery = _T("begin transaction");
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int len = arrayNo.GetSize();
for (int z=0 ;z<len;z++)
{
tmp1= arrayNo.GetAt(z);
tmp2= arrayID.GetAt(z);
tmp3= arrayDuration.GetAt(z);
tmp4= arrayState.GetAt(z);
CString str;
str.Format(_T("('%s','%s','%s',%s)"),tmp1, tmp2,tmp3,tmp4);
strQuery = _T("insert into [Zhaoyangqing].[dbo].[GameStateOutput] values ")+str;
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
}
strQuery = _T("commit transaction");
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
带有视觉工作室 2010 的 sql server 2008
你为什么要使用这么旧且不受支持的软件?有更快的方法将数据加载到 SQL Server 中,但是对于您正在使用的内容来说会很困难。
推荐阅读
- javascript - 等待 Chromium 更新后未返回
- javascript - 重新排列/交换嵌套的 json 数组键和值
- macos - 无法使用 JENKINS 用户调用 DOCKER
- python - 基于多个条件追加列
- ios - 前台应用程序之间的应用程序间通信
- php - 获取 INSERT 返回响应
- android - 如何锁定/冻结 CameraX 预览 TextureView?
- python - 从其他类访问 ShowBase
- python - 如何使用 python 检查我的所有线程是否都在后台启动和运行?
- spring-cloud - Spring Cloud Sleuth Rabbit 集成似乎在发送时创建了新的 TraceId