通過sqlldr將txt檔案匯入oracle資料庫

2021-10-03 19:22:40 字數 1023 閱讀 8658

有個專案每天要往資料庫裡插入大量的資料,峰值大概每秒一萬條左右。如果直接用insert語句,即使使用了批量也效果不是很理想。

聽說從檔案匯入的方式效率很高,所以嘗試一下。

【建立乙個表】

create table t_20200310_test 

(phone varchar2(20 byte) not null 

, name varchar2(20 byte) not null 

, age varchar2(20 byte) not null 

, createtime date not null 

) 【建立乙個txt檔案】

13900001260|老大|48|20190901103133

13800007326|老二|38|20190802113234

13400005323|老三|40|20190703123335

13000000196|老四|65|20190604133436

13600009320|老五|68|20190505143537

【用oracle使用者呼叫ctl】

sqlldr userid=oracle使用者名稱/oracle密碼@oracle的sid control=/user/inputtxt2oracletest/20200311_insert.ctl

【匯入完成】

我計畫讓程式一直生成檔案,然後讓oracle使用者自動執行20200311_insert.ctl,不停的向資料庫裡匯入記錄。

首先寫乙個.sh指令碼裡面一句話就行:

sqlldr userid=oracle使用者名稱/oracle密碼@oracle的sid control=/user/inputtxt2oracletest/20200311_insert.ctl

然後讓crontab來定時呼叫這個.sh,我設定的是每分鐘執行一次:

*/1 * * * * su - oracle -c "/home/oracle/test.sh"

這樣就實現了資料的高速匯入。但是要注意,這個還是受限於伺服器的配置和磁碟io速度。

通過DOS命令將txt檔案匯入mysql資料庫

首先在資料庫中建立表結構 尤其注意字符集要和txt檔案編碼一致 這裡都是utf8 還要注意txt中的資料型別要和資料庫中列的資料型別保持一致,如果匯入時報錯 就可能是編碼不一致,可以就txt檔案 再次另存為,修改編碼 dos命令 use demo load data infile f industr...

sqlldr入庫4G大小txt檔案

1 建立ctl檔案 如c.ctl 內容 第一行 讀取檔案 固定寫即可 load data 第二行 table後面為表名 意思為向資料庫增添資料 into table t dms grid dmd world ele 表名 第三行 要解析的文字,欄位間用空格分離 fields terminated b...

通過sqlldr將文字檔案匯入到表中

新來了乙個任務,要求將大量的資料匯入到資料庫的表中。先說明一下,存放資料的資料來源的格式有各種各樣,資料庫是oracle。決定用sqlldr命令來實現。首先要建立乙個ctl檔案,如下 load data 該檔案的解釋 infile test.txt 說明資料來源的 如果是想把原來表中的資料刪除,再新...