我正在使用 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 的值,以便在第二个表的插入中使用它,因为应该引用记录