1. 程式人生 > >DB2的資料移動:匯入(Import)匯出(Export)載入(Load)

DB2的資料移動:匯入(Import)匯出(Export)載入(Load)

目錄

檔案的格式

 DB2中的資料移動,包括: 

1. 資料的匯入(Import) 
2. 資料的匯出(Export) 
3. 資料的載入(Load) 

匯入和載入都是利用DB2的相關命令把某種格式的檔案中的資料儲存到資料庫中的表中;匯出是指把DB2資料庫的表中的資料儲存到某種格式的檔案當中去 

資料移動的作用: 如果要在不同的資料庫管理系統之間轉移資料,資料移動通常是最實用的一種方法,因為任何一種資料庫管理系統都支援常用的幾種檔案格式,通過這個通用的介面,就很容易實現不同系統間資料的轉移。 
 

檔案的格式

用於DB2資料移動的檔案格式有四種:

ASC = ASCII
DEL = Delimited ASCII
WSF = Work sheet format
IXF = Integrated Exchange Format

ASC 和 DEL 格式的檔案是文字檔案,可以用任何文字編輯器開啟。

WSF 格式的檔案可以將資料遷移到電子表格軟體中,例如 Excel,Lotus® 1-2-3。

IXF 格式檔案包括了資料表的資料描述語言(DDL)和裡面的資料。使用 IXF 格式是非常方便的,利用它可以重建資料表,而其他格式則沒有辦法這麼做.

當資料匯出到檔案後,使用 Import 可以將資料由檔案匯入到資料表中。如果使用 ASC,DEL 和WSF 格式的檔案作為中間檔案,在它們匯入之前資料表必須存在。而使用 IXF 格式的檔案在匯入前不需要存在相應的資料表。

1.ASC:ASC——非定界ASCII檔案,是一個ASCII字元流。資料流中的行由行定界符分隔,而行中的每一列則通過起始和結束位置來定義。

2.DEL:DEL——定界ASCII檔案,也是一個ASCII字元流。資料流中的行由行定界符分隔,行中的列值由列定界符分隔。檔案型別修飾符可用於修改這些定界符的預設值。

3. WSF:WSF——(work sheet format)為工作表格式,用於與Lotus系列的軟體進行資料交換。 

4. PC/IXF:PC/IXF——是整合交換格式(Integration Exchange Format,IXF)資料交換體系結構的改編版本,由一些列可變長度的記錄構成,包括頭記錄、表記錄、表中每列的列描述符記錄以及表中每行的一條或多條資料記錄。PC/IXF檔案記錄由包含了字元資料的欄位組成。

DB2 export 工具(匯出)

DB2 UDB export 工具將資料從資料庫表寫到儲存在資料庫外面的一個或多個檔案中。export 工具使用 SQL 從表中讀取資料。export工具將資料所寫到的檔案可以是幾種標準檔案格式的一種,它僅支援三種資料檔案格式:DEL,WSF,IXF。一般是IXF或DEL。除了要指定寫到輸出檔案中的資料格式之外,還必須提供該檔案的名稱和一個用於指定輸出資料的 SQL SELECT 語句。這就是啟動基本的 DB2 匯出操作所需的所有資訊。

圖 1. DB2 EXPORT 命令的部分語法

EXPORT 命令

例1:把Org表中的所有資料匯出到檔案c:\org.del中

export to c:\org.txt of del select * from org 

其中,of del表示匯出到的檔案的型別,在本例中匯出到一個非定界文字檔案中;後面的select * from org是一個SQL語句,該語句查詢出來的結果就是要匯出的資料。 

例2:改變del格式檔案的格式控制符 

export to c:\staff.del of del modified by coldel$ chardel'' decplusblank select * from staff 

檔案型別修飾符:modified by 用於控制各種符號

coldelx:指定x為新的單字串定界符,表示欄位之間的間隔符,預設情況為逗號(,),現在改為$號

chardelx:指定x為新的單字串列定界符,表示字串欄位用什麼符號引用,預設情況下為一對雙引號(" ")括起來,現在改為用一對單引號括起來。也可以無字串分隔符nochardel

decplusblank:指定對正數是否用+符號,預設帶+,可以指定不加正數符號,表示對於十進位制資料型別,用空格代替最前面的加號,因為預設情況下會在十進位制資料前面加上正負號的

striplzeros:指定移走資料前導的0,例如:+00001.8 -> +1.8

例3:大資料的匯出 

export to d:\myfile.del of del lobs to d:\lob\ lobfile lobs modified by lobsinfile select * from emp_photo 

該命令把emp_photo表的資料匯出到d:\myfile.del檔案中,其結果為: 

; 
"000130","bitmap","lobs.001.0.43690/" 
"000130","gif","lobs.001.43690.29540/" 
"000130","xwd","lobs.001.73230.45800/" 
"000140","bitmap","lobs.001.119030.71798/" 
"000140","gif","lobs.001.190828.29143/" 
"000140","xwd","lobs.001.219971.73908/" 
"000150","bitmap","lobs.001.293879.73438/" 
"000150","gif","lobs.001.367317.39795/" 
"000150","xwd","lobs.001.407112.75547/" 
"000190","bitmap","lobs.001.482659.63542/" 
"000190","gif","lobs.001.546201.36088/" 
"000190","xwd","lobs.001.582289.65650/" 
 ; 

BLOB型別:其中第三個欄位是BLOB型別,在該檔案中只儲存了一個標誌,相當於一個指標,真正的LOB資料儲存在d:\lob目錄下的lobs.001、lobs.002、......等一系列檔案中。命令中lobs to 後面指定大物件資料儲存在什麼路徑下(注意,該路徑必須事先已經存在,否則會報錯),lobfile 後面指定大物件資料儲存在什麼檔案中,不要指定副檔名,DB2會根據資料量自動追加.001、.002等副檔名,同時不要忘記加上modified by lobsinfile子句。

例4:把匯出資訊儲存在訊息檔案中。 

export to d:\awards.ixf of ixf messages d:\msgs.txt select * from staff where dept = 20

這個例子把staff表中dept=20的資料匯出到d:\awards.ixf檔案中,所有的匯出資訊都儲存在d:\msgs.txt檔案中(無論是成功、警告還是失敗資訊),這樣,管理員可以通過觀察資訊檔案找到問題所在。 

例5:給匯出資料列重新命名。 

export to d:\awards.ixf of ixf method n(c1,c2,c3,c4,c5,c6,c7) messages d:\msgs.txt select * from staff where dept=20

在預設情況下,匯出的每一列資料以表中對應的欄位名自動命名,我們可以通過method n子句給每一列重新命名,需要注意的是,這個子句只在ixf和wsf格式檔案中有效,在文字檔案中不能使用。

DB2 import 工具(匯入)

DB2 UDB import 工具將資料從輸入檔案寫到資料庫表或可更新檢視。import 工具使用 SQL INSERT 語句(或 SQL UPDATE 語句)將資料寫到目標表中。import 工具從中讀取資料的檔案可以是幾種標準檔案格式中的一種,一般是 PC/IXF、DEL 或 ASC。

除了要指定將從輸入檔案中讀取的資料格式之外,還必須提供該檔案的名稱、目標表的名稱,以及執行 import 工具的模式。這就是啟動基本的 DB2 匯入操作所需的所有資訊。圖 2 展示了 IMPORT 命令的部分語法圖,其中只包含必需的引數。

圖 2. DB2 IMPORT 命令的部分語法

IMPORT 命令

主要的 DB2 匯入模式有:

  • INSERT 將輸入資料新增到表中,並且不更改任何現有資料。
  • INSERT_UPDATE 將新的輸入資料新增到表中,或者用具有匹配主鍵值的輸入資料更新現有的行。
  • REPLACE (通過刪除資料物件)刪除表中的所有現有資料,然後再插入輸入資料。
  • REPLACE_CREATE 刪除現有表中的所有資料,然後再插入輸入資料。如果該表不存在,該模式將優先於插入輸入資料而建立表。該模式只對 PC/IXF 輸入檔案有效。

例1:把C盤根目錄下的org.txt檔案中的資料匯入到org表中

import from c:\org.del of del insert into org

匯入命令和匯出命令的格式基本上處於對應的關係,import對應export,from對應to,檔名和檔案格式代表的含義相同,但是匯入命令支援ASC格式的檔案,而匯出命令不支援。另外,在匯出命令的最後是一個SQL語句,用於選擇要匯出的資料,而匯入命令最後不是SQL語句,而是插入資料的方式以及目標表名稱。

例2:從ASC格式檔案中匯入資料

import from  c:\org2.txt of asc method l(1 5,6 19,20 25,26 37,38 50) insert into org

其中 method l 子句用於指定文字檔案中每一個欄位的起始位置和終止位置,每個起始位置和終止位置間用空格分開,欄位之間用逗號分開。(除了l方法之外,還有n方法和p方法)

例3:利用n方法匯入資料,並且建立新表。
首先匯出一個用例檔案:

export to d:\org.ixf of ixf method n(a,b,c,d,e) select * from org

這樣org.ixf檔案中有五列資料,對應的列名分別為a、b、c、d、e。然後在從該檔案中匯入資料到一個新表中

import from d:\org.ixf of ixf method n(d,e,b) replace_create into orgtest

該命令從檔案中選取三列匯入到表中,順序可以不按照檔案中原有的列的順序。

例4:利用p方法匯入資料

import from d:\org.ixf of ixf method p(4,5,2) replace into orgtest

該例子執行的效果和例3類似,只是把n方法換成了p方法,p方法後面的列表中指明列的序號即可,不需要指明列名。另外,此例中使用了replace方式插入資料,這會把表中現有的資料都刪除,然後向空表中插入資料。

例5:關於空值的匯入
對於ixf格式的檔案,匯入空值非常方便,因為裡面已經記錄了空值的資訊。但是,對於ASC格式檔案就有一定的難度了,因為DB2會直接插入空格,而不是空值。為此,DB2提供了一個子句進行控制:NULL INDICATORS

import from  c:\org2.txt of asc MODIFIED BY nullindchar=# method l(1 5,6 19,20 25,26 37,38 50) NULL INDICATORS(0,0,0,0,38 ) replace into org

在這個例子中,NULL INDICATORS子句後面是一個列表,表示前面四個欄位都不會存在空值,而第五個欄位從38列開始,可能存在空值,而 MODIFIED BY nullindchar=# 子句表示在檔案中第五個欄位如果遇到 # 號,則表示為空值。

DB2 load 工具(載入)

DB2 UDB load 工具非常高效地將一個或多個輸入檔案中的資料寫到資料庫表中。load 工具也從指定的管道、裝置(比如磁帶裝置)或使用者定義遊標接受輸入。load 工具與 import 工具不一樣,不是使用 SQL 將資料寫到目標表中;它是直接將格式化的頁寫到表中,因此比 import 工具要快得多。load 工具從中讀取資料的檔案可以是幾種標準檔案格式中的一種,一般是 PC/IXF、DEL 或 ASC。

除了要指定從輸入檔案讀取的資料格式之外,還必須提供該檔案的名稱、目標表的名稱,以及執行 load 工具的模式。INSERT 模式新增輸入資料到表中,並且不會更改任何現有資料。REPLACE 模式(通過刪除資料物件)刪除表中的所有現有資料,然後再插入輸入資料。圖 3 展示了 LOAD 命令的部分語法圖,其中只包含必需的引數。

圖 3. DB2 LOAD 命令的部分語法

LOAD 命令

相關推薦

DB2資料移動匯入Import匯出Export載入Load

目錄 檔案的格式  DB2中的資料移動,包括:  1. 資料的匯入(Import)  2. 資料的匯出(Export)  3. 資料的載入(Load)  匯入和載入都是利用DB2的相關命令把某種格式的檔案中的資料儲存到資料庫中的表中;匯出是指把DB2資料庫的

docker 映象匯入匯出(import export)和載入儲存(load,save)

很喜歡玩docker,但最新遇到一個問題,公司給的新機器的dns有問題,導致pull不下來映象。 沒辦法了,沒有映象什麼神馬都幹不了,又不能花很多時間去搭建私有的映象庫,只有另尋辦法了。 廢話少說,經過探究,發現 docker 提供把映象匯出export(儲存save

DB2資料匯入Import 匯出ExportLoad

資料的匯入 例七:把C盤根目錄下的org.txt檔案中的資料匯入到org表中 import from c:\org.txt of del insert into org 匯入命令和匯出命令的格式基本上處於對應的關係,import對應export,from對應to,檔名和檔案格式代表的含義相同,但是匯入命令支

資料二十六Sqoop的importexport命令和命令指令碼

一、sqoop匯入命令(import)         在Sqoop中,“匯入”概念指:從非大資料叢集(RDBMS)向大資料叢集(HDFS,HIVE,HBASE)中傳輸資料。 1.在MySql中新建一張表並插入一些資料 create&nb

5.非關係型資料庫Nosql之mongodb建立集合,備份與匯入匯出資料還原,匯入匯出

1固定集合固定集合值得是事先建立而且大小固定的集合2固定集合的特徵:固定集合很像環形佇列,如果空間不足,最早文件就會被刪除,為新的文件騰出空間。一般來說,固定集合適用於任何想要自動淘汰過期屬性的場景

向HBase中匯入資料3使用MapReduce從HDFS或本地檔案中讀取資料並寫入HBase增加使用Reduce批量插入

前面我們介紹了:為了提高插入效率,我們在前面只使用map的基礎上增加使用reduce,思想是使用map-reduce操作,將rowkey相同的項規約到同一個reduce中,再在reduce中構建put物件實現批量插入測試資料如下:注意到有兩條記錄是相似的。package cn

Drupal 7 節點資料Node匯入/匯出Import/Export

Node export  http://drupal.org/project/node_export Views  http://drupal.org/project/views Views Excel Export  http://drupal.org/project/viewsexportxls

SQL奇技淫巧01給查出的資料排序編個號【row_number() over(order by c)】mysql,db2,oracle,sqlserver通用

我們天天都在跟資料庫打交道,寫下的程式碼不計其數,寫下的SQL更是可以繞地球幾圈。這裡收集關於SQL的神奇語法及用法,雖然你可能沒有用過,但這些SQL卻可以在關鍵的時候,派上用場。 我對SQL語句的理解,可以比作一座橋樑,將零散的資料組合起來,拿到我所需要的有效資訊。也以此記錄一下使用心得 一. 語法

【Android】實用教程匯入android-gif-drawable包,不用在GitHub下載Android Studio 3.1.2

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80193877 【AS版本】 【步驟】 1、開啟Project Structural。(可點選圖示,也可以在File選單中開啟,也可以按Ctrl+Al

【Android】實用教程匯入SlidingMenu包,不用在GitHub下載Android Studio 3.1.2

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80192923 【AS版本】 【步驟】 1、開啟Project Structural。(可點選圖示,也可以在File選單中開啟,也可以按Ctrl+Al

誰說菜鳥不會資料分析入門篇----- 學習筆記5資料展現圖表

1、圖表作用:表達形象化、突出重點、體現專業化 2、圖示型別: 3、通過關係選擇圖表 4、圖表製作5步法 5、圖表:圖所不能說的話 突出單元格顯示:絕對值 專案選取:相對值 資料條:量綱不同 圖示集:企業運營指標發展態勢監控 迷你圖

JAVAExcel匯入匯出詳解3--匯出

Excel匯出 一、設定查詢條件 注意:無法通過Ajax下載 jsp程式碼 <form class="col-sm-2" action="/manage/order/download" method="post" onsubmit="checkForm()"

PE檔案格式學習匯入

UPDATE: 在文章的末尾更新了一張圖,在網上找的,有助於理解匯入表的結構 1.概述 匯入表是逆向和病毒分析中比較重要的一個表,在分析病毒時幾乎第一時間都要看一下程式的匯入表的內容,判斷程式大概用了哪些功能。 匯入表是資料目錄表中的第2個元素,排在匯出表的

three.js學習3匯入threejs

1.在HTML中匯入: 2.用js中匯入: (1)當你的檔案中內建的有一些匯入工具像Webpack或Browserify,你可以用 var THREE = require("three"); var scene = THREE.Scene(); (2)使用ES6的語法形式(如果

webRTC中音訊相關的netEQDSP處理 webRTC中音訊相關的netEQ控制命令決策 webRTC中音訊相關的netEQ資料結構

上篇(webRTC中音訊相關的netEQ(四):控制命令決策)講了MCU模組是怎麼根據網路延時、抖動緩衝延時和反饋報告等來決定給DSP模組發什麼控制命令的。DSP模組根據收到的命令進行相關處理,處理簡要流程圖如下。   從上圖看出如果有語音包從packet buffer裡取出來先要做解碼得到PC

python資料分析新手入門課程學習——探索分析與視覺化來源慕課網

 一,單因子與對比分析視覺化 資料 import pandas as pd df = pd.read_csv('./HR.csv') #檢視前十條資料 df.head(10) 以下為顯示的結果 我們可以看出: 第一個屬性satisf

資料結構篇二叉樹根據中序和後序遍歷結果推算出完整二叉樹

我們先理解一下前中後序遍歷,這是基礎。 //前序遍歷 void Tree::PreOrderTraverse(BiTree *T) { if(!T) { return ; } else { cout<<T->data<<" "; PreOrder

資料結構篇圖的遍歷廣度優先遍歷

廣度優先遍歷,又稱廣度優先搜尋,縮寫BFS 如果說深度優先遍歷是相當於樹的前序遍歷,那麼,廣度優先遍歷就相當於樹的層序遍歷。 以上面那張圖為例就是,ABFCIGEDH 程式碼實現 void AdjacencyList::BFSTraverse(GraphAdjList *G

資料結構篇圖的遍歷深度優先遍歷

深度優先遍歷,也稱作深度優先搜尋,縮寫為DFS 深度優先遍歷從某個頂點出發,訪問此頂點,然後從v的未被訪問的鄰接點觸發深度優先便利圖,直至所有和v有路徑想通的頂點都被訪問到。 這樣我們一定就訪問到所有結點了嗎,沒有,可能還有的分支我們沒有訪問到,所以需要回溯(一般情況下都設定一個數組,來

python資料分析分類分析classification analysis

何為分類分析 在機器學習和統計中,分類是基於包含其類別成員資格已知的觀察(或例項)的訓練資料集來識別新觀察所屬的一組類別(子群體)中的哪一個的問題。例如,將給定的電子郵件分配給“垃圾郵件”或“非垃圾郵件”類,並根據觀察到的患者特徵(性別,血壓,某些症狀的存在或不存在等)為給定患者分配