假设我在Oracle数据库中有以下表格
Foo:
+--------+---------+---------+
| id_foo | string1 | string2 |
+--------+---------+---------+
| 1 | foo | bar |
| 2 | baz | bat |
+--------+---------+---------+
栏:
+--------+-----------+--------+
| id_bar | id_foo_fk | string |
+--------+-----------+--------+
| 1 | 1 | boo |
| 2 | 1 | bum |
+--------+-----------+--------+
当我插入Foo时,使用数据集和JDBC,例如
Dataset<Row> fooDataset = //Dataset is initialized
fooDataset.write().mode(SaveMode.Append).jdbc(url, table, properties)
ID由数据库自动生成。现在,当我需要使用相同策略保存Bar
时,我希望能够通过Foo
将其链接到id_foo_fk
。
我研究了一些可能性,例如按照this question中的建议使用monotonically_increasing_id()
,但是由于我需要数据库生成的ID,因此无法解决问题。我尝试了this question中的建议,但这导致了相同的问题,即唯一的非数据库ID
由于string1
和string2
可能不是唯一的,因此也无法再次从JDBC中进行选择。也无法更改数据库。例如,我无法将其更改为UUID,也无法为其添加触发器。这是我们只能使用的旧数据库
我该如何实现?使用Apache Spark可以吗?
答案 0 :(得分:0)
我不是Java专家,所以您必须研究数据库层中如何继续进行操作,但是您可以通过3种方法来做到这一点: