日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle定时导入dat文件夹,oracle dat文件导入 | 学步园

發(fā)布時間:2023/12/31 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle定时导入dat文件夹,oracle dat文件导入 | 学步园 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天在執(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。