【发布时间】:2020-03-03 12:12:24
【问题描述】:
我正在编写一个接收树结构并将其插入数据库的方法,其中每个分支都是另一个数据库表。 例如:
tree = {
"_id": "111",
"field1": "",
"field2": "",
"field3": {
"_id": "333",
"_parent_id": "111",
"field3_1": "",
"field3_2": "",
"field3_3": [
{
"_id": "1",
"_parent_id": "333",
"field3_3_1": ""
},
{
"_id": "2",
"_parent_id": "333",
"field3_3_1": ""
},
{
"_id": "3",
"_parent_id": "333",
"field3_3_1": ""
}
]
}
}
应该对应于 3 个表:tree、field3 和 field3_3 - 它们在 _id 和 _parent_id 上有关系。 每个分支可以是单个值、表或对象,基本上树是对应于 PostgreSQL 数据库中的某些数据结构的动态结构。 我正在使用 jdbc 将数据插入数据库。当用户可能会提供具有多个分支或多个分支值的大树时,插入此类数据的最佳方法是什么? 我在考虑这样的声明:
with first_insert as(
insert into sample(firstname, lastname)
values('fai55', 'shaggk')
RETURNING id
),
second_insert as(
insert into sample1(id, adddetails)
values
((select id from first_insert), 'ss')
RETURNING user_id
)
但是如果内部插入应该处理大批量记录(field3_3 将包含每个数据行的 100k 条记录),问题就会出现。
我已经使用 PreparedStatement 和 executeBatch() 在单个数据库级别实现了接受表和插入的方法,并且效果很好。类似这种方法的任何东西,可用于树?
【问题讨论】:
标签: java jdbc insert batch-processing relation