天天看點

DB2導入導出指令整理

使用db2 backup指令備份

使用db2 restore指令恢複

使用db2look提取資料庫結構DDL

用于資料移動的檔案格式

使用db2move導出全部資料

使用db2 export指令導出資料

使用db2move導入(import)資料

使用db2 import指令導入資料

1.使用db2 backup指令備份(testdb資料庫名,db2inst1執行個體名)

首先關閉所有到資料庫的連接配接,将資料庫置為“靜默”狀态:

$ db2 connect to testdb user db2inst1 using thepasswd

$ db2 quiesce database immediate force connections

$ db2 connect reset

現在可以開始備份了:

$ db2 backup database testdb to “/home/backup” user db2inst1 using thepasswd

解除資料庫的“靜默”狀态:

$ db2 connect to testdb user db2inst1 using thepasswd

$ db2 unquiesce database

$ db2 connect reset

說明:

以上指令将會把資料庫testdb備份到指定目錄 /home/backup下,是以請確定目前登陸使用者(db2inst1)對該目錄有讀寫的權限。

2.使用db2 restore指令恢複

相同庫名恢複:

$ db2 restore database testdb from “/home/backup”

說明:

這将會從指定的位置恢複資料庫testdb。

不同庫名恢複:

$ db2 restore database zwdb from “/home/db2inst1/finger” into wfyh

說明:

這個指令将會建立一個新庫,名為testdb_new,其結構、内容來自原先testdb的備份。

db2 restore database zwdb from “/data/20180717/shuju” taken at 20180717183305 on “/data/20180717/shuju” dbpath on “/zwdb” into fingerdb

db2指定需要還原的路徑

3.使用db2look提取資料庫結構DDL

su - db2inst1 (原執行個體使用者)

建立一個檔案夾

mkdir data

cd data

導出表結構:db2look –d testdb –e –o bak_db.sql

4.使用db2move導出全部資料

mkdir data

cd data

db2move testdb export –u db2inst1 –p thepasswd

說明:

這将會把資料庫testdb中的全部資料提取到目前目錄(data)中。每個表的内容都存儲在一個.ixf檔案中,每個.ixf檔案都有一個與之相對應的.msg檔案,.msg檔案是描述從表中導出資料時的資訊的。另外還有兩個檔案,db2move.lst用來記錄.ixf檔案、.msg檔案與表的一一對應關系,EXPORT.out記錄的是導出資料時的螢幕輸出。

5.使用db2 export指令導出資料

與上面提到的db2move的export功能不同,db2 export是一個更加細緻的導出工具,它支援三種資料檔案格式:DEL, WSF, IXF.

以下示範将資料庫testdb中表mytbl的資料導出,存儲在目錄 /home/backup 下。

建立到資料庫的連接配接:

$ db2

db2 => connect to testdb user db2inst1 using thepasswd

以DEL格式導出:

db2 => export to /home/backup/mytbl.txt of del select * from mytbl

以IXF格式導出:

db2 => export to /home/backup/mytbl.ixf of ixf select * from mytbl

注:若需要記錄導出過程中的message,使用:

db2 => export to /home/backup/mytbl.ixf of ixf messages /home/backup/mytbl.msg select * from mytbl

斷開連接配接:

db2 => connect reset

db2 => quit

6.使用db2move導入(import)資料

cd data

db2move testdb import –u db2inst1 –p thepasswd

存在的問題:

db2move import方式隻能導入“普通”的表,如果表中存在自增長的IDENTITY列,那麼使用db2move import時,會出錯。這是因為,如果IDENTITY列建立表的時候都是定義成always的話,那麼在導入資料的時候該列資料是不能被指派的,而是應該由系統生成,使用db2move無法導入這樣的表。對于這種含有IDENTITY列的表,隻能使用db2 import指令來進行導入,相關的參數是IDENTITYIGNORE,IDENTITYMISSING。我将在下一部分給出具體的指令操作。

7.使用db2 import指令導入資料

import和export是一對存在對應關系的指令,有一點不同的是,import支援四種格式:ASC, DEL, WSF, IXF, 而export隻支援三種(見上面相應部分的描述)。

以下示範将資料檔案/home/movedata/mytbl.ixf導入到資料庫testdb中。

$ db2

db2 => connect to testdb user db2inst1 using thepasswd

db2 => import from /home/movedata/mytbl.ixf of ixf insert into mytbl

db2 => commit work

db2 => connect reset

db2 => quit

若表中存在自增長的IDENTITY列,需要使用相應的參數才能導入,比如:

db2 => import from /home/movedata/mytbl2.ixf of ixf modified by identityignore insert into mytbl2

8.檢視資料庫中表:

db2 connect to testdb

db2 list tables

9.導出原資料庫表結構以及資料

su - db2izw (原執行個體使用者)

建立一個檔案夾

mkdir data

cd data

導出表結構:db2look –d zwdb –e –z db2izw –l –o whzw.sql

導出資料:db2move zwdb export

修改配置:修改db2move.lst裡面的執行個體名為導入資料庫的執行個體名

打包已導出表結構及資料:tar zcvf whzw.tar.gz data/

10.在新db2導入資料

将data.tar.gz包ftp到新伺服器上的執行個體使用者下

解壓tar xvf whzw.tar.gz

cd data

導入表結構:db2 –tvf whzw.sql

導入資料:db2move zwdb load -lo replace --把上述“db2move zwdb export “導出的資料導入到資料庫中并把相同的資料替換掉