就像有人说的第二种方式更慢,但我不确定,那么哪种方式更好呢?不能使数据库崩溃。
第一种方法是可行的,但不必通过连接SQL来实现。Java JDBC已经具有批量发送插入的功能。在for循环中,您可以一次为一行执行插入,然后当达到所需的批处理大小时,调用executeBatch()将其发布到一个大的批量插入中。
您必须使用的值是一次插入的数量或批大小。这个答案将取决于您的硬件,所以只需看看什么工作。批处理大小越大,在任何时候内存中保存的单元就越多。对于真正的大型数据库,这样做,我仍然崩溃了程序,但没有数据库。只有当我为我的系统找到合适的批量大小时,一切都解决了。对我来说5000就可以了。但是多次运行超过一百万行,数据库还是很好的。但这同样取决于数据库。但你走在正确的道路上。
https://www.tutorialspoint.com/jdbc/jdbc-batch-processing.htm
然而,当我打开Hibernate的查询日志记录时,我看到在每个insert查询之前,都会执行一个select查询,以查看具有该id的实体是否已经存在。这是因为实体已经有了我提供的id。 我理解这种行为,这实际上是有道理的。但是,我确信ID将不存在,所以选择对我的情况没有意义。我保存了数以千计的记录,这意味着在大型表上有数以千计的select查询,这大大减缓了导入过程。 我的问题是:有没有办法关闭这
我试图理解插入排序和选择排序之间的区别。 它们似乎都有两个组成部分:未排序列表和排序列表。它们似乎都从未排序列表中提取一个元素,并将其放在排序列表的适当位置。我看到一些网站/书籍说选择排序通过一次交换一个来实现这一点,而插入排序只是找到合适的位置并插入它。但是,我看到其他文章说了些什么,说插入排序也交换。因此,我感到困惑。有任何规范的来源吗?
我正在使用大容量插入并得到以下错误: 注意:加载文件中的数据不超过配置的列长度 从'C:\temp\dataload\load_file.txt'大容量插入load_data(firstrow=1,fieldterminator='0x09',rowterminator='\n',MAXERRORS=0,ERRORFILE='C:\temp\dataload\load_file') Msg 486
问题内容: 我正在考虑使用Redis的协议进行批量插入,如下所述:http : //redis.io/topics/mass-insert 在我忙于编写代码来处理此问题之前,我只是想确保自己清楚什么是Redis要求进行此工作。 上面的链接建议使用大容量插入调用SET操作[SET myKey Value myValue],我需要创建一个命令,该命令可以在文件的多行或单个引号字符串中完成。 假设我不想
我正在为SQL Server使用大容量插入命令,但由于某些原因,第一行没有插入。为什么不能从第一行插入数据?大容量插入是否需要标头作为默认设置,如何规避?如果我添加一个虚拟行,并将设置为,那么插入第一行就没有问题了,但我认为这不是一个好的解决方案。 示例数据:
问题内容: 有没有办法插入预设值和我从选择查询中获得的值?例如: 我有“字符串”的值和数字5,但是我必须从这样的选择中找到[int]值: 那给我那个ID放在table1里面。 如何将其合并为一个语句? 问题答案: 使用查询,并将已知值放入: