欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在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 加載器可以使用自動(dòng) shell 腳本加載多個(gè)數(shù)據(jù)文件,需要的朋友可以參考下

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

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

設(shè)置

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

請(qǐng)觀看包含如何在 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 加載器自動(dòng)化將數(shù)百萬學(xué)生的信息加載到學(xué)生表中。該腳本將始終在 Unix 服務(wù)器中運(yùn)行并輪詢。DAT 文件,一旦 DAT 文件就位,它將對(duì)其進(jìn)行處理。另外,如果存在任何不良數(shù)據(jù),則需要單獨(dú)識(shí)別它們。

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

  • 從舊系統(tǒng),將定期生成實(shí)時(shí)源(DAT 文件)并將其發(fā)送到新系統(tǒng)服務(wù)器。
  • 在新系統(tǒng)中,服務(wù)器文件可用,并將使用自動(dòng)化 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、請(qǐng)參閱以下文件(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腳本自動(dòng)化的方式加載數(shù)百萬條記錄,以上參數(shù)可以根據(jù)需要設(shè)置。

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

相關(guān)文章

  • Oracle重建控制文件的實(shí)例教程

    Oracle重建控制文件的實(shí)例教程

    前些天在做Oracle數(shù)據(jù)庫恢復(fù)測(cè)試時(shí),因?yàn)橐恍┊惓2僮鲗?dǎo)致控制文件出了問題,數(shù)據(jù)庫無法正常使用,下面這篇文章就來給大家介紹了關(guān)于Oracle重建控制文件的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-05-05
  • oracle中讀寫blob字段的問題解析

    oracle中讀寫blob字段的問題解析

    這篇文章以程序?qū)嵗f明通過JDBC操縱Oracle數(shù)據(jù)庫LOB類型字段的幾種情況
    2013-09-09
  • oracle數(shù)據(jù)庫中chr()函數(shù)和concat函數(shù)的使用說明

    oracle數(shù)據(jù)庫中chr()函數(shù)和concat函數(shù)的使用說明

    這篇文章主要介紹了oracle數(shù)據(jù)庫中chr()函數(shù)和concat函數(shù)的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Oracle關(guān)聯(lián)表更新操作指南

    Oracle關(guān)聯(lián)表更新操作指南

    這篇文章主要給大家介紹了關(guān)于Oracle關(guān)聯(lián)表更新操作的相關(guān)資料, Oracle關(guān)聯(lián)更新是一種用于更新多表中某個(gè)表的數(shù)據(jù)時(shí),引用另一個(gè)表中的數(shù)據(jù),以避免數(shù)據(jù)錯(cuò)誤的技術(shù),需要的朋友可以參考下
    2023-07-07
  • oracle comment命令用法示例分享

    oracle comment命令用法示例分享

    oracle comment on命令說明及用法示例,大家參考使用吧
    2013-12-12
  • Oracle數(shù)據(jù)庫數(shù)據(jù)遷移完整解決步驟

    Oracle數(shù)據(jù)庫數(shù)據(jù)遷移完整解決步驟

    我們常常需要對(duì)數(shù)據(jù)進(jìn)行遷移,遷移到更性能配置更高級(jí)的主機(jī)OS上、遷移到遠(yuǎn)程的機(jī)房、遷移到不同的平臺(tái)下,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫數(shù)據(jù)遷移的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法

    詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法

    這篇文章主要介紹了詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • oracle創(chuàng)建一個(gè)數(shù)據(jù)庫三步走

    oracle創(chuàng)建一個(gè)數(shù)據(jù)庫三步走

    這篇文章主要介紹了oracle如何創(chuàng)建數(shù)據(jù)庫和用戶,以及每一步所涉及到的代碼,需要的朋友可以參考下
    2015-08-08
  • oracle創(chuàng)建用戶過程詳解

    oracle創(chuàng)建用戶過程詳解

    這篇文章主要介紹了oracle創(chuàng)建用戶過程詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺析新建Oracle數(shù)據(jù)庫的三種方法

    淺析新建Oracle數(shù)據(jù)庫的三種方法

    以下是對(duì)新建Oracle數(shù)據(jù)庫的三種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08

最新評(píng)論