最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Oracle數(shù)據(jù)庫表中加載多個(gè)數(shù)據(jù)文件的方法詳解

 更新時(shí)間:2024年01月02日 10:43:53   作者:Squids數(shù)據(jù)庫云服務(wù)提供商  
這篇文章主要給大家介紹了在Oracle數(shù)據(jù)庫表中加載多個(gè)數(shù)據(jù)文件的方法,本文中,我將展示 SQL 加載器 + Unix 腳本實(shí)用程序的強(qiáng)大功能,其中 SQL 加載器可以使用自動 shell 腳本加載多個(gè)數(shù)據(jù)文件,需要的朋友可以參考下

在本文中,我將展示 SQL 加載器 + Unix 腳本實(shí)用程序的強(qiáng)大功能,其中 SQL 加載器可以使用自動 shell 腳本加載多個(gè)數(shù)據(jù)文件。這在處理大量數(shù)據(jù)以及需要將數(shù)據(jù)從一個(gè)系統(tǒng)移動到另一個(gè)系統(tǒng)時(shí)非常有用。

它適合涉及大量歷史數(shù)據(jù)的遷移項(xiàng)目。那么就不可能為每個(gè)文件運(yùn)行 SQL 加載程序并等待其加載。因此,最好的選擇是讓包含 SQL 加載命令的 Unix 程序始終運(yùn)行。一旦文件夾位置中有任何文件可用,它將從該文件夾位置拾取文件并立即開始處理。

設(shè)置

示例程序是我做的。在 Macbook 中,Oracle 的安裝與 Windows 機(jī)器上的安裝有所不同。

請觀看包含如何在 Mac 上安裝 Oracle 的詳細(xì)步驟的視頻。

讓SQL 開發(fā)人員遵守 Java 8。

現(xiàn)在讓我們來演示一下這個(gè)例子。

在 Oracle DB 表中加載多個(gè)數(shù)據(jù)文件

因?yàn)樗?Macbook,所以我必須在 Oracle 虛擬機(jī)內(nèi)完成所有操作。

讓我們看看下圖 SQL Loader 是如何工作的。

使用案例

需要使用 Shell 腳本 + SQL 加載器自動化將數(shù)百萬學(xué)生的信息加載到學(xué)生表中。該腳本將始終在 Unix 服務(wù)器中運(yùn)行并輪詢。DAT 文件,一旦 DAT 文件就位,它將對其進(jìn)行處理。另外,如果存在任何不良數(shù)據(jù),則需要單獨(dú)識別它們。

此類示例在需要加載數(shù)百萬歷史記錄的遷移項(xiàng)目中非常有用。

  • 從舊系統(tǒng),將定期生成實(shí)時(shí)源(DAT 文件)并將其發(fā)送到新系統(tǒng)服務(wù)器。
  • 在新系統(tǒng)中,服務(wù)器文件可用,并將使用自動化 Unix 腳本加載到數(shù)據(jù)庫中。
  • 現(xiàn)在讓我們運(yùn)行腳本,該腳本可以在Unix服務(wù)器上一直運(yùn)行。為了實(shí)現(xiàn)這一點(diǎn),整個(gè)代碼被放入下面的 while 塊中。
while true
[some logic]
done

過程

1、我已復(fù)制以下文件夾中的所有文件+文件夾結(jié)構(gòu)。

/home/oracle/Desktop/example-SQLdr/

2、請參閱以下文件(ls -lrth)

rwxr-xr-x. 1 oracle oinstall  147 Jul 23  2022 student.ctl

-rwxr-xr-x. 1 oracle oinstall   53 Jul 23  2022 student_2.dat

-rwxr-xr-x. 1 oracle oinstall  278 Dec  9 12:42 student_1.dat

drwxr-xr-x. 2 oracle oinstall   48 Dec 24 09:46 BAD

-rwxr-xr-x. 1 oracle oinstall 1.1K Dec 24 10:10 TestSqlLoader.sh

drwxr-xr-x. 2 oracle oinstall   27 Dec 24 11:33 DISCARD

-rw-------. 1 oracle oinstall 3.5K Dec 24 11:33 nohup.out

drwxr-xr-x. 2 oracle oinstall 4.0K Dec 24 11:33 TASKLOG

-rwxr-xr-x. 1 oracle oinstall    0 Dec 24 12:25 all_data_file_list.unx

drwxr-xr-x. 2 oracle oinstall    6 Dec 24 12:29 ARCHIVE

3、如下圖,student表中沒有數(shù)據(jù)。

4、現(xiàn)在使用以下命令運(yùn)行腳本nohup.out ./TestSqlLoader.sh 通過這樣做,它將始終在 Unix 服務(wù)器中運(yùn)行。

5、現(xiàn)在腳本將運(yùn)行,它將通過 SQL 加載器加載兩個(gè) .dat 文件。

6、該表應(yīng)加載兩個(gè)文件的內(nèi)容。

7、現(xiàn)在我再次刪除表數(shù)據(jù),只是為了證明腳本始終在服務(wù)器中運(yùn)行,我將僅將兩個(gè) DAT 文件從 ARCHIVE 放置到當(dāng)前目錄。

8、再次將這兩個(gè)數(shù)據(jù)文件放入當(dāng)前目錄中。

-rwxr-xr-x. 1 oracle oinstall  147 Jul 23  2022 student.ctl

-rwxr-xr-x. 1 oracle oinstall   53 Jul 23  2022 student_2.dat

-rwxr-xr-x. 1 oracle oinstall  278 Dec  9 12:42 student_1.dat

drwxr-xr-x. 2 oracle oinstall   48 Dec 24 09:46 BAD

-rwxr-xr-x. 1 oracle oinstall 1.1K Dec 24 10:10 TestSqlLoader.sh

drwxr-xr-x. 2 oracle oinstall   27 Dec 24 12:53 DISCARD

-rw-------. 1 oracle oinstall 4.3K Dec 24 12:53 nohup.out

drwxr-xr-x. 2 oracle oinstall 4.0K Dec 24 12:53 TASKLOG

-rwxr-xr-x. 1 oracle oinstall    0 Dec 24 13:02 all_data_file_list.unx

drwxr-xr-x. 2 oracle oinstall    6 Dec 24 13:03 ARCHIVE

9、再次看到 Student 表已加載所有數(shù)據(jù)。

10、該腳本始終在服務(wù)器上運(yùn)行

[oracle@localhost example-sqldr]$ ps -ef|grep Test

oracle   30203     1  0 12:53?        00:00:00 /bin/bash ./TestSqlLoader.sh

oracle   31284 31227  0 13:06 pts/1    00:00:00 grep --color=auto Test

完整源代碼供參考

#!/bin/bash

bad_ext='.bad'
dis_ext='.dis'
data_ext='.dat'
log_ext='.log'
log_folder='TASKLOG'
arch_loc="ARCHIVE"
bad_loc="BAD"
discard_loc="DISCARD"
now=$(date +"%Y.%m.%d-%H.%M.%S")
log_file_name="$log_folder/TestSQLLoader_$now$log_ext"

while true;
do
 ls -a *.dat 2>/dev/null > all_data_file_list.unx
  for i in `cat all_data_file_list.unx`
    do
    #echo "The data file name is :-- $i"
    data_file_name=`basename $i .dat`  
    echo "Before executing the sql loader command ||Starting of the script" > $log_file_name 
    
  sqlldr userid=hr/oracle@orcl control=student.ctl errors=15000 log=$i$log_ext bindsize=512000000 readsize=500000 DATA=$data_file_name$data_ext BAD=$data_file_name$bad_ext DISCARD=$data_file_name$dis_ext

  mv $data_file_name$data_ext $arch_loc 2>/dev/null
  mv $data_file_name$bad_ext $bad_loc 2>/dev/null
  mv $data_file_name$dis_ext $discard_loc 2>/dev/null
  mv $data_file_name$data_ext$log_ext $log_folder 2>/dev/null

  echo "After Executing the sql loader command||File moved successfully" >>  $log_file_name
    
    done

## halt the procesing for 2 mins

sleep 1m

done

CTL 文件如下。

OPTIONS (SKIP=1)
LOAD DATA
APPEND
INTO TABLE student
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
id,
name,
dept_id
)

SQL 加載器規(guī)范

1. control --> name of the .ctl file

2.errors=15000(SQL Loader 允許的最大錯(cuò)誤數(shù))

3.log=iiilog_ext(日志文件的名稱)

4.bindsize=512000000(綁定數(shù)組的最大大?。?/p>

5.readsize=500000(最大大?。?nbsp;

  • DATA=datafilenamedata_file_namedataf?ilen?amedata_ext(數(shù)據(jù)文件的名稱和位置)

  • BAD=datafilenamedata_file_namedataf?ilen?amebad_ext(壞文件的名稱和位置)

  • DISCARD=datafilenamedata_file_namedataf?ilen?amedis_ext(丟棄文件的名稱和位置)

綜上所述,這種方式可以通過SQL加載器+Unix腳本自動化的方式加載數(shù)百萬條記錄,以上參數(shù)可以根據(jù)需要設(shè)置。

以上就是在Oracle數(shù)據(jù)庫表中加載多個(gè)數(shù)據(jù)文件的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Oracle加載多個(gè)數(shù)據(jù)文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

巴东县| 台北县| 轮台县| 乃东县| 武义县| 车致| 桂林市| 康保县| 土默特左旗| 胶南市| 五华县| 娱乐| 余江县| 永泰县| 麻城市| 伊川县| 绵阳市| 揭阳市| 永城市| 鄂伦春自治旗| 杭锦后旗| 晋州市| 陵川县| 玉环县| 旺苍县| 新竹县| 嘉善县| 黄平县| 苗栗县| 海安县| 夏津县| 丹寨县| 尉犁县| 吴堡县| 连州市| 自治县| 南陵县| 邵阳市| 北碚区| 余干县| 乐山市|