C++ 提高从客户端应用程序到MS SQL 2008数据库的大规模导入速度
我有一个Qt应用程序,它读取一个特殊的文本文件,对其进行解析,并将大约100000行插入firebird数据库中的一个临时表中。然后它启动一个存储过程来处理这个临时表,并对永久表应用一些更改。在firebird上将100000行插入内存中的临时表大约需要8秒 现在,我需要使用MS SQL Server 2008实现这种行为。如果我使用简单的串行插入,100000行大约需要76秒。不幸的是,它太慢了。我从以下几个方面看:C++ 提高从客户端应用程序到MS SQL 2008数据库的大规模导入速度,c++,sql-server-2008,qt,C++,Sql Server 2008,Qt,我有一个Qt应用程序,它读取一个特殊的文本文件,对其进行解析,并将大约100000行插入firebird数据库中的一个临时表中。然后它启动一个存储过程来处理这个临时表,并对永久表应用一些更改。在firebird上将100000行插入内存中的临时表大约需要8秒 现在,我需要使用MS SQL Server 2008实现这种行为。如果我使用简单的串行插入,100000行大约需要76秒。不幸的是,它太慢了。我从以下几个方面看: 临时表(#和#)。以tempdb方案存储在磁盘上。因此没有速度增加 批量插入
谢谢。您可以通过或接口使用大容量复制操作 MSDN文章似乎贯穿了整个过程,对于ODBC:
- 要进行大容量复制的表或视图的名称
- 为数据文件的名称指定NULL
- 用于接收任何大容量复制错误消息的数据文件的名称 (如果不需要消息文件,请指定NULL)
- 从应用程序到视图的复制方向:DB_IN或 表或DB_从表或视图输出到应用程序
如果您需要跨平台实现批量复制功能,请查看。“但是需要客户端或服务器端共享文件夹”不,没有。谢谢您的回答。我忘了提一下,我的申请表是crosplatform。您能建议我使用Windows和Linux中的ODBC或OLEDB以及可选的MacOS吗?@typbl4跳过OLEDB/ODBC,直接使用FreeTDS。我已经更新了我的答案。