您好我想從一個CSV文件
數據導入使用導入使用蟾蜍數據時爲Oracle
我創建了相應的欄目「蟾蜍爲甲骨文」我的Oracle數據庫如何創建序列,
但想創建一個主鍵序列
與我的數據
你如何創建導入的數據序列對應?
您好我想從一個CSV文件
數據導入使用導入使用蟾蜍數據時爲Oracle
我創建了相應的欄目「蟾蜍爲甲骨文」我的Oracle數據庫如何創建序列,
但想創建一個主鍵序列
與我的數據
你如何創建導入的數據序列對應?
一種可能的方法是使用序列與觸發器:
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;
這將設置在插入的PK,如果它不是在INSERT語句中提供。
如果您已經在12c上,則可以使用新的GENERATED AS IDENTITY
功能。
'Trigger'很好。但是當數據量很大時,'Sequence'會更好嗎? –
@OracleUser對於大量的數據/重複導入,我會使用單獨的臨時表,其中每個列都被定義爲VARCHAR2(4000)。然後,我會將csv數據導入該登臺表並使用INSERT ... SELECT將其傳輸到目標表,並在必要時包括TO_NUMBER()/ TO_DATE()轉換。這使調試錯誤的輸入數據變得更容易,因爲您可以對臨時表運行即席查詢。是的,在這種情況下,將序列包含在INSERT語句中而不是使用觸發器會更有意義。 –
您可以在DB中創建一個'SEQUENCE',然後參考插入數據的SEQUENCE.NEXTVAL。 – Incognito