我要编写一个接收大量数据流(每秒数千条消息)的c ++应用程序,并尽快将其插入MS sql server2008 db(到一个或多个表中)。我是Windows的新手,在msdn中描述的很多方面,我无法判断这样做的最佳方法,例如: 1.我应该使用ODBC(使用sql本机驱动程序)还是OLE db? odbc慢吗? 2.我应该尝试sqlprepare插入stmt吗?我应该尝试将几个插入物组合在一起吗?或者我应该尝试存储过程?这会更快吗? 3.有人提到要探索Windows是否直接公开表格数据流API(但我找不到一个,现在对我来说可能有点先进。)
我想尝试快速运行,快速开发(希望简单)。 请帮助,任何想法最感激。 非常感谢!
答案 0 :(得分:2)
查看SqlBulkCopy - 这允许快速插入多行数据。你可以缓冲几千行并定期插入它们。
答案 1 :(得分:1)
在类似的应用程序中,我已经批量传入数据并使用BULK INSERT通过.Net 2 SqlBulkCopy类插入它们。它每秒插入大约100,000行。
这是使用Sql Server 2005;我不知道在2008年有任何改进的方法可以用于此类工作。
编辑:由于您无法使用.Net框架,另一种方法是使用bcp_sendrow插入数据,或将传入的数据写入文件并使用BULK INSERT命令或bcp.exe来完成繁重的操作。