【发布时间】:2014-02-26 15:12:56
【问题描述】:
您好,我正在尝试从 csv 文件导入数据
使用“Toad for Oracle”进入我的 Oracle 数据库
我已经创建了相应的列,
但想创建一个主键序列
与我的数据相对应
如何为导入的数据创建序列?
【问题讨论】:
-
你在DB中创建一个
SEQUENCE,然后参考SEQUENCE.NEXTVAL里面插入数据。
您好,我正在尝试从 csv 文件导入数据
使用“Toad for Oracle”进入我的 Oracle 数据库
我已经创建了相应的列,
但想创建一个主键序列
与我的数据相对应
如何为导入的数据创建序列?
【问题讨论】:
SEQUENCE,然后参考SEQUENCE.NEXTVAL里面插入数据。
一种可能的方法是使用带有 TRIGGER 的 SEQUENCE:
create sequence seq_my_pk;
create table my_table (pk number not null primary key, value varchar2(30));
create or replace trigger tr_my_table_pk
before insert on my_table
for each row
begin
if :new.pk is null then
:new.pk := seq_my_pk.nextval;
end if;
end;
如果在 INSERT 语句中没有提供 PK,这将在插入时设置 PK。
如果您已经使用 12c,则可以改用新的 GENERATED AS IDENTITY 功能。
【讨论】:
Trigger 很好。但是当数据量很大时,Sequence会更好不是吗?