问题标签 [batch-insert]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - MongoDB 批量插入不适用于 java 驱动程序 2.11.2
MongoDb 2.4.7
mongo-java-driver-2.11.2.jar
Windows 7的
所以我试图通过插入一批插入来加载测试 mongodb 来判断它可以处理多少吞吐量。如果一次插入一个它可以工作:
...
现在,如果我将其更改为批处理它不起作用(重复键异常触发):
...
java - 使用 JPA + Hibernate 进行大规模插入
我需要使用 EJB 3、Hibernate、Spring Data 和 Oracle 进行大规模插入。最初,我使用的是 Spring Data,代码如下:
其中 talaoAITDAO 是 Spring Data JpaRepository子类,而 taloes 是 TalaoAIT 实体的集合。在该实体中,其各自的 ID 具有以下形式:
此外,该实体没有相关实体可进行级联插入。
我的问题是,所有实体都是单独插入的(例如INSERT INTO TABLE(col1, col2) VALUES (val1, val2)
)。有时,它可能会导致超时,并且所有插入都将回滚。我希望将这些单独的插入转换为批量插入(例如INSERT INTO TABLE(col1, col2) VALUES (val11, val12), (val21, val22), (val31, val32), ...
)。
研究提高性能的替代方案,我在 hibernate 文档中找到了这个页面,超出了 Hibernate 批量大小混淆和这个其他页面。基于它们,我编写了以下代码:
此外,在 peristence.xml 中,我添加了以下属性:
然而,尽管在我的测试中我发现了一个细微的差异(主要是大集合和大批量),但它并没有想象中那么大。在日志控制台中,我看到 Hibernate 继续进行单独的插入,而不是替换它们以进行大量插入。在我的实体中,我使用的是序列生成器,我相信这不是问题(根据 Hibernate 文档,如果我使用身份生成器,我会遇到问题)。
所以,我的问题是这里可能缺少什么。一些配置?有些方法没用过?
谢谢,
拉斐尔·阿方索。
perl - 使用perl解析一个大文件并将数据插入mongo,在将数据转储到db之前或之后索引?
现在,我正在使用 mongodb 来持久化一个非常大的文件(90G),其中包含近 40,000,000 个项目。
我读取并解析了这个文件并将所有项目插入到 mongodb 中(我的编程语言是 perl,batch_insert 而不是 insert,我将一项映射到一个 mongodb 文档)。
在我插入之前,我已经预先创建了索引(大约 10 个索引键)。
我发现插入速度不能满足我的需要(每秒 200 到 400 个项目)。
我知道,太多的索引键肯定会减慢我的插入速度,尤其是当集合的大小变得很大时。
所以,我想知道在我将所有数据转储到db之后是否可以索引它们。任何人都可以告诉我这种方式是否可用,或者这种方式是否可以节省我的时间?
neo4j - Neo4j BatchInserter 和 TimelineIndex [v1.9.4]
我正在使用 BatchInserterIndex 将大量数据摄取到 Neo4j DB。我打算在批处理期间将节点添加到 TimelineIndex (Lucene)。现在,以正常方式,TimelineIndex 需要 (node, long) 来添加索引。它可能在内部使用密钥“时间戳”。(在 github 中的 LuceneTimeline.java 中检查)
我的问题是我能够将节点插入到 TL 索引中,但无法使用常规 java API 检索它们。它总是将timelineIndex.getFirst() 返回为null。我已将索引初始化如下。
常规访问方式
批量摄取
现在,当我尝试使用timelineIndex.getFirst() 来检索Batch Inserter 添加的数据时,它总是返回null。但是,在 SAME DB 上以常规方式添加的节点会返回正确的值。
我哪里错了?
spring - Hibernate 4.3 Spring 4批量插入与关联表
首先让我说,我不是 Java 程序员,但我正在尝试学习一些新的(对我而言)东西。
我有以下两个 DAO: 货架
和书
如您所见,它们是按表关联的:*shelf_books*
现在在BookDaoImpl中,我想拥有一种全有或全无行为的方法,这可以让我保存多本书,如下所示:
由于某种原因,关联表的数据是添加而不是删除,它在包含删除集合 org.sample.bookshelf.model.Shelf.shelfBooks的以下日志中可见:
我猜出于某种原因,书架不知道添加的书籍,为了使其完整,这就是我添加数据的方式:
如您所见,我没有在任何地方调用shelf.setShelfBooks,如果我这样做,一切似乎都很好,但是hibernate的作用看起来很糟糕,请查看以下日志的片段:
我有感觉,我做错了,谁能告诉我什么应该是正确的方法来做我想做的事?
mysql - Copying rows via sql query
I am trying to insert multiple rows via sql query
scenario is this :
There are multiple attributes against 1 testID
and I want to copy attributes of one test to another test by giving their TestID
here is the query I am trying but its not working at all
Here I am copying attributes of testID=877
to testID=635
, test with ID 877 has 10 attributes and test with testID 635 have just 1.
There is an Autoincrement Primery Key Named AttributeID and the error is
mongodb - springdata MongoDB 批量插入,带有 continueOnError 选项
MongoDB 支持 continueOnError 选项,因此即使单个文档插入失败,批量插入也会继续。
有没有办法使用 spring-data 版本 1.3.3.RELEASE 来实现这一点。我正在使用 MongoOperations 类,但没有看到允许我执行此操作的 API。
谢谢!!
java - Neo4j BatchInserterIndex OutOfMemoryError 异常
我正在使用BatchInserter从 neo4j 数据库中获取特定属性和关系,以使用 BatchInserterIndex 编写新索引(带有数字索引)。
大约 10 分钟后,索引文件夹的大小为 4.7G,内存已完全使用,垃圾收集使其变得非常慢,再过一段时间后,VM 以垃圾收集器异常结束。
代码大致如下:
我使用以下 Java VM 选项:
在具有 16GB RAM 和 Java 1.7_60 的机器上
a) 我做错了吗?
b) 是什么占用了所有的记忆?是lucene还是neo4j?
c) Michael Hunger 在他的批量进口商中做了什么不同的事情?我看了一眼代码,但我真的不知道他是如何做到的。
python - 批量插入 neo4j - 最佳选择?
我一直在尝试将一个相对较大的数据集导入 neo4j ......大约有 5000 万个具有关系的节点。
我首先通过 py2neo -> 尝试了 Cypher,它确实有效,但如果您需要使用 CREATE UNIQUE 或 MERGE,它会变得非常慢。
我现在正在研究其他批量导入方法,我想知道是否有关于这些方法中哪种方法最适合一般工作流程和速度的建议:
- Neo4j 文档提到了一个批处理插入工具,它看起来是 Java 并且是 Neo4j 发行版的一部分;
- github 上还有 Michael Hunger 的批处理插入器,我不确定这与发行版中包含的那个有什么相似或不同;
- 然后还有我目前正在测试的load2neo ;
- 然后是作为 Neo v2 的 CYPHER 一部分的CSV功能的负载,尽管我不确定它是否主要是一个便利因素,以及它的性能是否类似于通过 Cypher 批量执行 Cypher 查询,例如 40 000交易。
对于这些选项之间的功能、工作流程和速度差异的任何评论,我将不胜感激。
java - 在 SQL 中对相关表使用批量插入
我有两个 MySQL 表,Persons
并且Addresses
. 在Persons
表中,有一列是同名列id_address
的外键。中的Addresses
列具有ed 值。所以当我想插入新人时,我插入设置为新值的地址,然后我使用的最后一个 id 。id_address
Addresses
AUTO_INCREMENT
LAST_INSERT_ID()
Persons.id_address
所以我的问题是,是否有任何选项可以为这两个表设置批量插入,然后一步插入更多行?
我正在使用 Java 和 MySQL 驱动程序,我需要这个没有 ORM 框架。
编辑:我发现这是不可能的,相关答案在这里: 两个不同的准备好的语句在一个批次中