我有数据从磁盘流式传输并由Java应用程序在内存中处理,最终需要复制到SQL Server中.数据可能相当大(因此是流式传输),并且可能需要插入多达100,000个行.最快的解决方案似乎是使用SQL Server的批量复制功能.但是,我还没有找到任何方法让Java程序轻松或快速地完成此任务.
以下是我已经调查过的一些方法:
在.NET中使用SqlBulkCopy类.这非常有效,因为您可以直接从数据源直接流式传输数据到SQL Server.这种方法的问题是你需要运行.NET.也许这可以使用Java to .NET桥来使用.虽然,我想知道运行时间之间编组数据的成本.
使用BULK INSERT TSQL语句.这个问题是您需要在磁盘上创建格式正确的文件.我已经看到使用这个比JDBC的批量插入有一些小的性能提升.此外,这仅在本地有用.
将文件写入磁盘并使用bcp命令行实用程序.仍然比JDBC批量插入快一点但不是那么多.我也失去了使用此方法进行交易的能力.
使用C API.再次,非常有效,但你需要使用C.有一种方法可以通过JNI使用它.如果有一些免费的Java库可以做到这一点,我想知道它.
我正在寻找最快的解决方案.记忆不是问题.
谢谢!