我在将数字列表导入我创建的全球临时表时遇到了一些问题。
问题:将数据导入全局临时表时,即使有成功的消息提示,也不会在所需的列中显示任何内容。
上一个努力:
我目前正在使用数据导入向导方法来执行此操作。我尝试从.txt导入,但它给了我一个null错误。我尝试从.xlsx导入,但它给了我Java堆空间错误。我尝试将.txt文件重命名为.tsv文件,它说它有效,但没有导入实际数据。下面的图像显示完成,但所需列中的最终结果计数仍为0.
我之前尝试过使用SQL Developer在工作表中执行insert语句,但是,我一次只能将大约20,000行insert语句复制并粘贴到工作表中。我不想多次复制和粘贴。但是,这样做会更新表并保留数据。
这个问题现已得到解答。见下文。
答案 0 :(得分:2)
默认情况下,使用隐式on commit delete
子句创建全局临时表:
create global temporary table tblbc (bc number);
Global temporary TABLE created.
select duration from user_tables where table_name = 'TBLBC';
DURATION
---------------
SYS$TRANSACTION
正如对话消息所述,导入正在提交。这意味着数据随后将从GTT中删除,因为持续时间设置为。这相当于做:
insert into tblbc(bc) values (42);
1 row inserted.
commit;
Commit complete.
select * from tblbc;
no rows selected
如果您重新定义GTT,那么您将能够在提交后看到导入的数据,至少在同一会话中:
drop table tblbc;
Table TBLBC dropped.
create global temporary table tblbc (bc number) on commit preserve rows;
Global temporary TABLE created.
select duration from user_tables where table_name = 'TBLBC';
DURATION
---------------
SYS$SESSION
insert into tblbc(bc) values (42);
1 row inserted.
commit;
Commit complete.
select * from tblbc;
BC
----------
42
现在,您可以将GTT中的数据与其他表格进行比较,这只是在该会话中。结束会话后,GTT数据将丢失。