Oracle 巧用外部表將大量excel資料匯入資料庫
當excel/txt/csv/dbf等檔案資料大於10w,直接匯入可能比較慢,如下簡單使用了下oracle的外部表功能使資料庫直接載入/讀取系統檔案(而非insert表)。
1、將excel另存為.txt格式,再傳到資料庫directory 路徑(目錄列表:select * from dba_directories)
2、執行建立外部表語句:
create table test
(name1 varchar(4000 )/*等其他欄位*/)
organization external
(type oracle_loader
default directory bak
access parameters
( records delimited by newline characterset UTF16
fields terminated by " "
)location ( '檔名稱.txt' ))
reject limit unlimited;
引數註釋:
引數註釋:
( records delimited by newline characterset UTF16 /*字符集要和“檔名稱.txt”字符集相同,而非資料和系統檔案(檢視T.txt字符集命令:file T.txt)*/
fields terminated by " " /*描述欄位的終止符*/
3、查詢表即可 select * from test;
引數介紹:
a)ORGANIZATION EXTERNAL 關鍵字,必須要有。以表明定義的表為外部表。
b)外部表的型別
ORACLE_LOADER:定義外部表的預設方式,只能只讀方式實現文字資料的裝載。
ORACLE_DATAPUMP:支援對資料的裝載與解除安裝,資料檔案必須為二進位制dump檔案。可以從外部表提取資料裝載到內部表,也可以從內部表解除安裝資料作為二進位制檔案填充到外部表。
c)DEFAULT DIRECTORY:預設的目錄指明瞭外部檔案所在的路徑
d)LOCATION:定義了外部表的位置
e)ACCESS PARAMETERS:描述如何對外部表進行訪問
RECORDS關鍵字後定義如何識別資料行
DELIMITED BY 'XXX'——換行符,常用newline定義換行,並指明字符集。對於特殊的字元則需要單獨定義,如特殊符號,
b)外部表的型別
ORACLE_LOADER:定義外部表的預設方式,只能只讀方式實現文字資料的裝載。
ORACLE_DATAPUMP:支援對資料的裝載與解除安裝,資料檔案必須為二進位制dump檔案。可以從外部表提取資料裝載到內部表,也可以從內部表解除安裝資料作為二進位制檔案填充到外部表。
c)DEFAULT DIRECTORY:預設的目錄指明瞭外部檔案所在的路徑
d)LOCATION:定義了外部表的位置
e)ACCESS PARAMETERS:描述如何對外部表進行訪問
RECORDS關鍵字後定義如何識別資料行
DELIMITED BY 'XXX'——換行符,常用newline定義換行,並指明字符集。對於特殊的字元則需要單獨定義,如特殊符號,
可以使用OX'十六位值',例如tab(/t)的十六位是9,則DELIMITEDBY0X'09';
cr(/r)的十六位是d,那麼就是DELIMITEDBY0X'0D'。
SKIP X ——跳過X行資料,有些檔案中第一行是列名,需要跳過第一行,則使用SKIP 1。
FIELDS關鍵字後定義如何識別欄位,常用的如下:
FIELDS:TERMINATED BY 'x'——欄位分割符。
ENCLOSED BY 'x'——欄位引用符,包含在此符號內的資料都當成一個欄位。
例如一行資料格式如:"abc","a""b,""c,"。使用引數TERMINATED BY ',' ENCLOSED BY '"'後,系統會讀到兩個欄位,第一個欄位的值是abc,第二個欄位值是a"b,"c,。
LRTRIM ——刪除首尾空白字元。
MISSING FIELD VALUES ARE NULL——某些欄位空缺值都設為NULL。
對於欄位長度和分割符不確定且準備用作外部表檔案,可以使用UltraEdit、Editplus等來進行分析測試,如果檔案較大,則需要考慮將檔案分割成小檔案並從中提取資料進行測試。
cr(/r)的十六位是d,那麼就是DELIMITEDBY0X'0D'。
SKIP X ——跳過X行資料,有些檔案中第一行是列名,需要跳過第一行,則使用SKIP 1。
FIELDS關鍵字後定義如何識別欄位,常用的如下:
FIELDS:TERMINATED BY 'x'——欄位分割符。
ENCLOSED BY 'x'——欄位引用符,包含在此符號內的資料都當成一個欄位。
例如一行資料格式如:"abc","a""b,""c,"。使用引數TERMINATED BY ',' ENCLOSED BY '"'後,系統會讀到兩個欄位,第一個欄位的值是abc,第二個欄位值是a"b,"c,。
LRTRIM ——刪除首尾空白字元。
MISSING FIELD VALUES ARE NULL——某些欄位空缺值都設為NULL。
對於欄位長度和分割符不確定且準備用作外部表檔案,可以使用UltraEdit、Editplus等來進行分析測試,如果檔案較大,則需要考慮將檔案分割成小檔案並從中提取資料進行測試。
f)FIELDS TERMINATED BY "," --描述欄位的終止符
g)REJECT LIMIT UNLIMITED --描述允許的錯誤數,此處為無限制
【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224278/viewspace-1812424/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將excel表格匯入資料庫Excel資料庫
- 如何用Java將excel資料匯入資料庫JavaExcel資料庫
- Excel 表匯入資料Excel
- java怎麼將excel表格資料匯入資料庫JavaExcel資料庫
- Oracle 資料匯入ExcelOracleExcel
- pl/sql developer將excel資料匯入到資料庫中SQLDeveloperExcel資料庫
- oracle外部表實現大資料量的Excel匯入Oracle大資料Excel
- 將informix匯出的文字資料匯入oracle資料庫ORMOracle資料庫
- ORACLE資料庫裡表匯入SQL Server資料庫Oracle資料庫SQLServer
- excel 匯入sqlyog資料庫ExcelSQL資料庫
- 將表格資料匯入Excel表程式碼例項Excel
- 將SQLServer表直接匯入Oracle資料庫(圖文教程)SQLServerOracle資料庫
- 匯入excel資源到資料庫Excel資料庫
- 將excel中資料從window上匯入到linux中oracle資料庫ExcelLinuxOracle資料庫
- TP5.1excel匯入資料庫的程式碼?php excel如何匯入資料庫?Excel資料庫PHP
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- Oracle匯入excel資料快速方法OracleExcel
- asp.net 操作Excel表資料匯入到SQL Server資料庫ASP.NETExcelSQLServer資料庫
- 巧用外部表備份歷史資料
- 將XML匯入資料庫XML資料庫
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- 把Excel表資料匯入到mysqlExcelMySql
- 將資料庫中資料匯出為excel表格資料庫Excel
- 將資料匯出到ExcelExcel
- PostgreSQL資料庫匯入大量資料時如何最佳化SQL資料庫
- PHP匯入大量CSV資料PHP
- java 從EXCEL匯入到資料庫JavaExcel資料庫
- 從Excel到匯入MYSQL資料庫ExcelMySql資料庫
- Excel匯入Sqlserver資料庫指令碼ExcelSQLServer資料庫指令碼
- 如何將Excl內資料匯入資料庫?資料庫
- 使用Oracle SQL Developer匯入Excel資料OracleSQLDeveloperExcel
- greenplum使用gpfdist與外部表高效匯入資料
- Oracle資料庫表結構匯出器-work/excel版本Oracle資料庫Excel
- Python使用pymysql和xlrd2將Excel資料匯入MySQL資料庫PythonMySqlExcel資料庫
- excel檔案中的資料匯入Oracle資料庫的幾種方法ExcelOracle資料庫
- PROC++批次匯入匯出ORACLE資料庫表 (轉)Oracle資料庫
- Oracle工具之sqlldr的使用--如何將文字檔案或Excel中的資料匯入資料庫OracleSQLExcel資料庫
- Access 匯入 oracle 資料庫Oracle資料庫