oracle定时导入dat文件夹,oracle dat文件导入 | 学步园
今天在執(zhí)行dat文件導(dǎo)入的時候,由于很久沒執(zhí)行過這種操作了,因此又變得生疏了,花了比較長的時間才弄好。然后看到網(wǎng)上關(guān)于oracle dat文件的導(dǎo)入介紹的都是一部分,所以特在這里總結(jié)一下。
一、dmp文件和dat文件的區(qū)別
1、dmp文件包含的信息有數(shù)據(jù)庫的版本信息、數(shù)據(jù)文件的字符集、數(shù)據(jù)文件導(dǎo)出路徑信息、數(shù)據(jù)庫用戶信息、數(shù)據(jù)庫導(dǎo)出的表的信息、索引信息、表空間信息等數(shù)據(jù)庫的詳細(xì)信息。dat文件只是導(dǎo)入的表的數(shù)據(jù)信息。
2、oracle可以一次性導(dǎo)入多張表到dmp文件中,但是只能導(dǎo)一張表到dat文件中。
3、dmp文件可以包括表空間、索引、用戶、表、序列、存儲過程、視圖等數(shù)據(jù)庫的所有信息,并可以用這些信息還原整個數(shù)據(jù)庫,但是dat文件只是用來存放表的數(shù)據(jù)信息,只能還原表的數(shù)據(jù)信息。
4、對于單張表的數(shù)據(jù)導(dǎo)入(即不需要創(chuàng)建表、創(chuàng)建表索引等信息)時,dat文件的導(dǎo)入要比dmp文件導(dǎo)入快很多,由其是對于數(shù)據(jù)量非常大的表。
5、dmp文件主要用于數(shù)據(jù)庫備份、數(shù)據(jù)遷移等需要多張表操作或需要創(chuàng)建表信息的操作。dat文件主要用于純數(shù)據(jù)的遷移和備份。
二、dat文件轉(zhuǎn)換為控制文件(.ctl文件)
1、control文件
------------------------------------------------------------------------
--SQL
--程序功能:在命令行用sqlplue自動生成sql*load控制文件
--輸入?yún)?shù):
--&1 ? 表名
--&2 ? 數(shù)據(jù)文件名
--&3 ? 目錄名
--返回值結(jié)果:生成文件為:目錄名+表名+.ctl
--調(diào)用: sqlplus PAS/pas123 @d:\control.sql jksj_ll 20091231_005_LL.dat d:\
--created by hqx ?2010-03-26
--修改記錄:
------------------------------------------------------------------------
set echo off
set heading off
set verify off
set feedback off
set show off
set trim off
set pages 0
set concat on
set lines 300
set trimspool on
set trimout on
spool &3&1..ctl
select 'LOAD DATA'||chr (10)||
'INFILE ''&3&2'''||chr (10)|| ? ?--說明導(dǎo)入文件的路徑
'APPEND INTO TABLE '||table_name||chr (10)|| ? --說明導(dǎo)入至的數(shù)據(jù)庫表名
'FIELDS TERMINATED BY '','''||chr (10)|| ? --說明dat文件列與列之間的分隔符
'OPTIONALLY ENCLOSED BY ''"'''||chr (10)|| --說明包裝數(shù)據(jù)類型的符號,即當(dāng)在dat文件中用“”包裝數(shù)據(jù),這時需要配置“,數(shù)據(jù)庫才不會讀”.
'TRAILING NULLCOLS'||chr (10)||'('
from ? all_tables
where ?table_name = upper ('&1');
select decode (column_id, 1, ' ? ', ' , ')||
rpad (column_name, 33, ' ')||
decode (data_type,
'VARCHAR2', 'CHAR NULLIF ('||column_name||'=BLANKS)', ?--定義各datatype的為空時的處理方式
'FLOAT', ? ?'DECIMAL EXTERNAL NULLIF('||column_name||'=BLANKS)',
'NUMBER', ? decode (data_precision, 0,
'INTEGER EXTERNAL NULLIF ('||column_name||
'=BLANKS)', decode (data_scale, 0,
'INTEGER EXTERNAL NULLIF ('||
column_name||'=BLANKS)',
'DECIMAL EXTERNAL NULLIF ('||
column_name||'=BLANKS)')),
'DATE', ? ? 'DATE "MM/DD/YY" ?NULLIF ('||column_name||'=BLANKS)',
null)
from ? user_tab_columns
where ?table_name = upper ('&1')
order ?by column_id;
select ')'
from sys.dual;
spool off
exit
2、根據(jù)control.sql文件生成對應(yīng)的控制文件
執(zhí)行sqlplus student/869160 @C:\Users\Administrator\Desktop\control.sql JKSJ_DKBJLXSH DKSX.dat C:\Users\Administrator\Desktop\
這里的JKSJ_DKBJLXSH為control.sql里面的&1,DKSX.dat為control.sql里面的&2,C:\Users\Administrator\Desktop\為control.sql里面的&3
這樣就生成了以表名JKSJ_DKBJLXSH為文件名的控制文件JKSJ_DKBJLXSH.ctl。如下:
LOAD DATA
INFILE 'C:\Users\Administrator\Desktop\DKSX.dat'
APPEND INTO TABLE JKSJ_DKBJLXSH
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
ZHDH ? ? ? ? ? ? ? ? ? ? ? ? ? ? CHAR NULLIF (ZHDH=BLANKS)
, JYRQ ? ? ? ? ? ? ? ? ? ? ? ? ? ? INTEGER EXTERNAL NULLIF (JYRQ=BLANKS)
, ZJLSH ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHAR NULLIF (ZJLSH=BLANKS)
, QXRQ ? ? ? ? ? ? ? ? ? ? ? ? ? ? INTEGER EXTERNAL NULLIF (QXRQ=BLANKS)
, JXRQ ? ? ? ? ? ? ? ? ? ? ? ? ? ? INTEGER EXTERNAL NULLIF (JXRQ=BLANKS)
, BS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CHAR NULLIF (BS=BLANKS)
, JGDH ? ? ? ? ? ? ? ? ? ? ? ? ? ? CHAR NULLIF (JGDH=BLANKS)
, KMH ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHAR NULLIF (KMH=BLANKS)
, JE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (JE=BLANKS)
, FL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (FL=BLANKS)
, WSFL ? ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (WSFL=BLANKS)
, JXBJ ? ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (JXBJ=BLANKS)
, JXLX ? ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (JXLX=BLANKS)
, SQLX ? ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (SQLX=BLANKS)
, JYM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHAR NULLIF (JYM=BLANKS)
, BQYHBJ ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (BQYHBJ=BLANKS)
, BQYHLX ? ? ? ? ? ? ? ? ? ? ? ? ? DECIMAL EXTERNAL NULLIF (BQYHLX=BLANKS)
)
3、根據(jù)生成的控制文件將數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫
執(zhí)行:
sqlldr userid=student/869160 control=C:\Users\Administrator\Desktop\JKSJ_DKBJLXSH.ctl log=C:\Users\Administrator\Desktop\JKSJ_DKBJLXSH.log direct=true;
即語句為sqlldr userid=數(shù)據(jù)庫用戶名/密碼 control=控制文件的絕對路徑 log=日志文件存放絕對路徑 direct=參數(shù)
如果語句執(zhí)行成功,會出現(xiàn):
注:在windows環(huán)境下,在cmd窗口執(zhí)行生成控制文件的語句時,由于設(shè)置了sqlplus,在.ctl控制文件中,可能會存在時間信息,這是需要手工刪除這些信息,否則在執(zhí)行數(shù)據(jù)文件導(dǎo)入時會報錯。
總結(jié)
以上是生活随笔為你收集整理的oracle定时导入dat文件夹,oracle dat文件导入 | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典CNN模型特点总结
- 下一篇: 学习numpy快速入门教程 心得体会(1