【问题标题】:How to create sequence when importing data using Toad for Oracle如何在使用 Toad for Oracle 导入数据时创建序列
【发布时间】:2014-02-26 15:12:56
【问题描述】:

您好,我正在尝试从 csv 文件导入数据
使用“Toad for Oracle”进入我的 Oracle 数据库

我已经创建了相应的列,
但想创建一个主键序列
与我的数据相对应

如何为导入的数据创建序列?

【问题讨论】:

  • 你在DB中创建一个SEQUENCE,然后参考SEQUENCE.NEXTVAL里面插入数据。

标签: oracle sequence toad


【解决方案1】:

一种可能的方法是使用带有 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会更好不是吗?
  • @OracleUser 对于大量数据/重复导入,我会使用一个单独的临时表,其中每一列都定义为 VARCHAR2(4000)。然后,我将 csv 数据导入该临时表并使用 INSERT ... SELECT 将其传输到目标表,必要时可能包括 TO_NUMBER() / TO_DATE() 转换。这使得调试错误的输入数据变得更加容易,因为您可以对临时表运行临时查询。是的,在这种情况下,在 INSERT 语句中包含序列而不是使用触发器会更有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2020-09-15
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多