如果是txt檔案的資料匯入oracle中,資料量大的話用pl/sql會卡死,那麼就要用到sqlload命令
首先需要將建立ctl格式的檔案:
*.ctl格式為:
load data
infile "d:"
外部資料檔案
infile "d:"
可指定多個資料檔案
向表中追加資料
fields terminated by ","
外部檔案的資料以「,」分隔
optionally enclosed by '"'
部分字段可以用雙引號包起來
trailing nullcols
表中的字段沒有對應的值時填充空值
(id integer external,
integer external 表示插入的資料是string,如果只保留integer,表示插入的資料是二進位制
name "upper(:name)",
將插入的值轉換為大寫
con ":id||:name",
表中con列的值是id和name的組合值
dt date"yyyy-mm-dd"
插入日期型資料
)說明:
load data
告訴sqlldr要做什麼(在這個例子中,則指示要載入資料)。sqlldr還可以執行continue_load,也就是繼續載入。只有在繼續乙個多表直接路徑載入時才能使用後面這個選項
infile
* :如果是*號,這會告訴sqlldr所要載入的資料實際上包含在控制檔案本身上,例見下一文。如上例指定包含資料的另乙個檔案的檔名。如果願意,可以使用乙個命令列引數覆蓋這個infile語句。要當心,命令列選項總會涵蓋控制檔案設定
:insert
向表中插入值,但要求表開始時為空,
預設的載入選項
replace
delete表中的資料,然後插入新值,記錄多時速度慢
向表中追加資料
truncate
trunctate表,然後插入新值,不能回退
fields terminated by 『,』
:告訴sqlldr資料的形式應該是用逗號分隔的值。為sqlldr描述輸入資料的方式有數十種;這只是其中較為常用的方法之一。
terminated by whitespace
會解析這個串,查詢空白符(製表符、空格和換行符)的第一次出現,然後繼續查詢,直至找到下乙個非空白符。
(id integer external,
.....
dt date"yyyy-mm-dd"):告訴sqlldr所要載入的列、這些列在輸入資料中的順序以及資料型別。這是指輸入流中資料的資料型別,而不是資料庫中的資料型別。列的資料型別預設為char(255)
載入這樣的定界資料時,很可能想逃過輸入記錄中的某些列。例如,你可能載入欄位1、3和5,而跳過第2列和第4列。為此,sqlldr提供了filler關鍵字。這允許你對映乙個輸入記錄中的一列,但不把它放在資料庫中。
在cmd命令下,執行
sqlldr userid=test/[email protected]/test control=d:/sql2.ctl log=d:/sqlldr2.log
mysql匯入txt文字資料
按照mysql官方文件指示下 建立資料庫和表 mysql create database menagrie 然後建立表 1 mysql create table pet name varchar 20 owner varchar 20 2 species varchar 20 char 1 birt...
將txt檔案匯入到SQL server2000中
最近在做乙個小專案,用的資料庫是sql server,現在遇到乙個問題,就是局方提供了乙個txt文字,這個文字裡面有幾百條資料,需要將這幾百條資料匯入到資料庫中,我在網上搜尋到的方法如下,create table h2t sp dm spdm varchar 10 spmc varchar 100 ...
通過sqlldr將txt檔案匯入oracle資料庫
有個專案每天要往資料庫裡插入大量的資料,峰值大概每秒一萬條左右。如果直接用insert語句,即使使用了批量也效果不是很理想。聽說從檔案匯入的方式效率很高,所以嘗試一下。建立乙個表 create table t 20200310 test phone varchar2 20 byte not null...