SELECT ne-6ren">
gpt4 book ai didi

postgresql - Scriptella - 如何获取和重新使用自动生成的 ID?

转载 作者:行者123 更新时间:2023-11-29 11:34:37 30 4
gpt4 key购买 nike

我正在使用 Scriptella 进行 ETL 操作,处理许多用自动生成的 ID 引用的表。我想在不使用子查询的情况下重新使用这些 ID,这是我的 etl 文件的脚本片段:

<script connection-id="out" if="rownum>1">

SELECT nextval('SQC_CLASE') AS claseId;
INSERT INTO zoologia.clase VALUES( ?claseId, ?phylumId, ?clase, ?subclase, ?infraclase, true );

SELECT nextval('SQC_ORDEN') AS ordenId;
INSERT INTO zoologia.orden VALUES( ?ordenId, ?claseId, ?orden, ?suborden, true );

SELECT nextval('SQC_SUPERFAMILIA') AS superfamiliaId;
INSERT INTO zoologia.superfamilia VALUES( ?superfamiliaId, ?ordenId, ?superfamilia, true );

SELECT nextval('SQC_FAMILIA') AS familiaId;
INSERT INTO zoologia.familia VALUES( ?familiaId, ?superfamiliaId, ?familia, ?subfamilia, ?tribu, true );

SELECT nextval('SQC_GENERO') AS generoId;
INSERT INTO zoologia.genero VALUES( ?generoId, ?familiaId, ?genero, true );

SELECT nextval('SQC_ESPECIE') AS especieId;
INSERT INTO zoologia.especie VALUES( ?especieId, ?generoId, ?especie, ?subespecie, ?variedad, ?genero, true );

</script>

这显然是错误的,因为 SELECT 不能在脚本中执行,对吗?我不太确定如何在没有子查询的情况下执行此操作。我正在使用 PostgreSQL。

编辑:我想要实现的是,例如,获取在第一个表的插入中使用的自动生成的 id 的值,以便在第二个表的插入中使用它,因为记录应该被引用

最佳答案

感谢来自 Scriptella 论坛的用户,这是解决方案,一个包含所有序列值的查询:

<query connection-id="external">
<query connection-id="sizoo">
SELECT nextval('SQC_PHYLUM') AS phylumId
, nextval('SQC_CLASE') AS claseId
, nextval('SQC_ORDEN') AS ordenId
, nextval('SQC_SUPERFAMILIA') AS superfamiliaId
, nextval('SQC_FAMILIA') AS familiaId
, nextval('SQC_GENERO') AS generoId
, nextval('SQC_ESPECIE') AS especieId;

<script connection-id="sizoo" if="rownum>1">
INSERT INTO zoologia.phylum VALUES( ?phylumId, ?phylum, true );
INSERT INTO zoologia.clase VALUES( ?claseId, ?phylumId, ?clase, ?subclase, ?infraclase, true );
INSERT INTO zoologia.orden VALUES( ?ordenId, ?claseId, ?orden, ?suborden, true );
INSERT INTO zoologia.superfamilia VALUES( ?superfamiliaId, ?ordenId, ?superfamilia, true );
INSERT INTO zoologia.familia VALUES( ?familiaId, ?superfamiliaId, ?familia, ?subfamilia, ?tribu, true );
INSERT INTO zoologia.genero VALUES( ?generoId, ?familiaId, ?genero, true );
INSERT INTO zoologia.especie VALUES( ?especieId, ?generoId, ?especie, ?subespecie, ?variedad, ?genero, true );
</script>
</query>
</query>

关于postgresql - Scriptella - 如何获取和重新使用自动生成的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808116/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com