ETL對檔案資料進行處理,進入到資料倉儲

2021-09-14 04:12:48 字數 1225 閱讀 9640

對一些資料,我們不能直接從資料庫抽取到資料倉儲,而是以另一種形式存在,如bat檔案、txt文字等,那麼對於這些檔案資料該如何處理。

方法:(1)利用oracle的sql plus工具,對資料進行寫入到原始的資料表(即再資料從倉庫中建的表,用於儲存檔案的原始資料),然後再對原始的資料進行更新(u)、插入(i)、刪除(d)操作即可

注:原始的資料檔案中的字段必須要有資料記錄的操作型別,即u、i、d標識

例子:前提:

(1)建立源資料表以inc開頭命名,用以儲存原始的資料

(2)建立資料倉儲的表以ods命名,用以儲存處理過後的資料

過程:(1)將資料檔案通過oracle的sqlldr導到資料中的inc表中

(2)inc中的資料是沒經過處理的,要經過轉換成資料格式符合的格式,就需要通過轉換,如日期、字串的轉換

(3)將inc的資料經過處理載入到目標的表ods中

sql plus導資料進入資料庫的方法:

1、編寫ctl檔案

格式如下:

options(errors=5000000,bindsize=33554432,readsize=33554432)----當資料檔案過大,用於改變快取,否則會報錯

load data

characterset utf8 -----字元的格式

infile "d:\inc\data\etl\test.dat" -----資料檔案的位置

truncate into table_name ----目標表

fields terminated by "" -----資料檔案字元的分隔符

trailing nullcols

( id char(4000),

name char(4000)

)

注:若需要將字段拼到一起,給乙個新的字段,可以在ctl檔案中直接寫

如: id_name char(4000) 「:id||:name」

這裡的冒號可以理解為變數的賦值,|| 依然是oracle的拼接字元

2、利用oracle的sqlldr命令將資料檔案匯入到inc表中

sqlldr userid=使用者名稱/使用者密碼 control=d:\test\test.ctl log=d:\test\test.log bad=d:\test\test.bad
3、將inc表中的資料導進ods中

可以用儲存過程,也可以用kettle等etl工具。

c語言以資料塊的形式對檔案資料進行操作

fgets 有侷限性,每次最多只能從檔案中讀取一行內容,因為 fgets 遇到換行符就結束讀取。如果希望讀取多行內容,需要使用 fread 函式 相應地寫入函式為 fwrite。fread 函式用來從指定檔案中讀取塊資料。所謂塊資料,也就是若干個位元組的資料,可以是乙個字元,可以是乙個字串,可以是多...

檔案資料處理

一 檔案的讀寫 1 輸入輸出重定向 命令列格式 c programoutputfile 即執行名為program。exe的可執行程式,用檔案inputfile作為輸入,用檔案outputfile作為輸出。例如 c addnumbers output.txt 從檔案number.txt中讀取資料,執行...

Linux對檔案進行歸檔和壓縮處理

常見的壓縮檔案的副檔名 gz gzip 程式壓縮的檔案 bz2 bzip2 程式壓縮的檔案 tar tar程式打包的資料,並沒有經過壓縮 tar.gz tar 程式打包的檔案,其中經過gzip的壓縮 tar.bz2 tar 程式打包的檔案,其中經過bzip2的壓縮 2.1 gzip 使用gzip壓縮...