oracle通過.txt文件導入百萬數據,效率高


最近在項目遇到了oralce需要導入50多萬條數據的需求,使用insert語句1萬條數據差不多最快需要30秒,那么50次呢...效率太低。通過在網上查閱資料找到了一個比較高效的方法。具體操作如下:

1. 需要導入數據的表先創建好

比如說需要導入數據的表BJ_TD_TXBH有2列,字段為GUID、TXBH。

創建表的sql(沒有考慮添加主鍵,如果添加主鍵GUID,那么要確保導入50萬條的數據GUID唯一)

-- Create table
create table BJ_TD_TXBH
(
  GUID varchar2(50),
  TXBH varchar2(50)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 8
    minextents 1
    maxextents unlimited
  );
-- Add comments to the columns 
comment on column BJ_TD_TXBH.GUID
  is 'GUID';
comment on column BJ_TD_TXBH.TXBH
  is '圖形編號';

創建完成之后,查詢沒有數據。

2.創建好表之后,將需要導入的2列數據保存到.txt文件,使用逗號隔開。

txt文件插入13000條數據

將需要導入的2列數據排列格式效果如圖(文件名為txbh.txt):

tip:

因為我這邊提供的數據是從excel復制過來的,怎么將50多萬條數據GUID和TXBH中間加逗號呢?
方法如圖:

3.編寫自動入庫腳本.ctl

--編寫 insert.ctl 文件
load data
characterset utf8
INFILE 'D:/sql/txbh.txt'
Append into table bj_td_txbh
fields terminated by ","
(
guid,txbh
)

上效果圖,並語法解釋:

編寫好.ctl文件和.txt文件之后,放入到D:/sql文件中。

4.執行腳本

執行腳本語法:

sqlldr userid=用戶名/密碼@數據庫實例名 control=腳本名

執行結果(測試插入了13000條數據):


5.注意事項

1.當時在服務器操作的時候,使用記事本打開.ctl文件之后可能會損壞文件格式,執行腳本會報錯。建議使用編譯器或者notepad++來進行操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM