有個專案每天要往資料庫裡插入大量的資料,峰值大概每秒一萬條左右。如果直接用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 說明資料來源的 如果是想把原來表中的資料刪除,再新...