postgresql – Scriptella – 如何获取和重用自动生成的ID?
发布时间:2020-12-13 15:55:54 所属栏目:百科 来源:网络整理
导读:我正在使用Scriptella进行ETL操作,使用自动生成的id引用的许多表.我想在不使用子查询的情况下重用这些id,这是我的etl文件的脚本片段: script connection-id="out" if="rownum1"SELECT nextval('SQC_CLASE') AS claseId;INSERT INTO zoologia.clase VALUES(
我正在使用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,true ); </script> 这显然是错误的,因为SELECT不能在脚本内部执行,对吧?我不确定如何在子查询中执行此操作.我正在使用PostgreSQL. 编辑: 解决方法
感谢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,true ); INSERT INTO zoologia.orden VALUES( ?ordenId,true ); INSERT INTO zoologia.superfamilia VALUES( ?superfamiliaId,true ); INSERT INTO zoologia.familia VALUES( ?familiaId,true ); INSERT INTO zoologia.genero VALUES( ?generoId,true ); INSERT INTO zoologia.especie VALUES( ?especieId,true ); </script> </query> </query> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |