將txt文字資料匯入到Oracle資料庫中去

2021-07-11 01:48:30 字數 1641 閱讀 6199

如果是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...