db2常用命令與匯入匯出
相比圖形介面而言,使用命令列的命令可以節省很多記憶體資源。但是寫的時候語法需要熟悉。
db2start:啟動當前的DB2資料庫管理例項。
db2stop:停止當前的資料庫管理例項。
注:啟動和關閉的是資料庫管理例項,而不是單個的資料庫,而restart database:並不是重新啟動資料庫,是平衡非正常結束而不一致狀態的資料庫,結束後,連線仍然存在。
db2look:能為表,索引,檢視和諸如此類需要產生統計資訊和資料定義語言(DDL)的物件產生需要的語句,以便重建資料庫物件和/或更新統計資訊。 DB2CLP下直接db2look,可看到選項。 db2move:db2移動資料的一個工具,可以在兩個不同的db2資料庫間移動資料,這兩個DB2資料庫可以在不同的伺服器上,尤其是大量資料的表需要 轉移的情況下,非常方便。 DB2CLP下直接db2move,可看到選項。
以下命令在“db2=>;”下鍵入“? Command”可以看到使用。
catalog:編目資料庫或節點
uncatalog:刪除已經編目的資料庫或節點
這一對命令其實就實現了客戶機配置輔助程式編目資料庫的功能。
update:功能是更新資料庫/資料庫管理器配置引數,
更新命令列處理器設定和監控器的開關等。
connect:連線到一個數據庫。
注:習慣顯式的關閉連線。
attach:建立一個到例項的連線,執行例項級別的管理。
list:顯示一些資料庫物件或者設定的相關資訊
get:獲取一些資料庫引數的設定和狀態
runstats:執行統計,更新系統目錄表中的資訊。
backup:備份資料庫
1、防止意外資料丟失或系統意外
2、重定向恢復實現整個資料庫的遷移
3、AIX下的備份需要指定with n buffers 和 buffer size
restore:還原資料庫
注:作業系統相同才可進行備份和恢復
force application:強行關閉應用程式或者連線
匯入匯出資料:
檔案格式:
DEL:界定的ASCII檔案,行分隔符和列分隔符將資料分開。常用
ASC:定長的ASCII檔案,行按照行分割符分開,列定長。
PC/IXF:只能用來在db2之間導資料,根據型別數字值被打包成十進位制或者二進位制,字元被儲存為ASCII,只儲存變數已經使用了的長度,檔案中包括表的定義和表的資料。
WSF:工作表方式匯入匯出,不建議使用。 export:匯出資料,支援IXF,DEL或WSF
import:匯入資料,可以向表或者檢視中匯入資料,支援上面提到的4中檔案。
注:當一個表中的主鍵被其他表引用為外來鍵時,匯入資料只能選APPEND,不能選替換。
load:匯入資料,功能和import基本相同。支援以上說的4種格式。Load最大的缺點是變化沒有記錄日誌,不能前滾恢復。
Load的工作步驟:
1、載入階段:
把資料載入到表中
收集並存儲索引
2、建立階段
建立載入階段收集的索引
3、刪除階段
把違反唯一鍵或主鍵約束的記錄放到例外表中
刪除違反主鍵和唯一鍵約束的記錄
注:自動生成列資料匯入問題。
Load完畢之後:
Load程式可以將表或者表所在的表空間處於掛起狀態。
1、載入掛起:在載入階段發生錯誤,表空間處於此狀態
解決方法:
A:糾正錯誤後重新載入,將replace或者insert換成restart。將從失敗處重新開始裝載操作。
B:如果前面呼叫用了replace,則再使用replace做load。
C:用terminate選項終止load操作。
D:DBA撤消並重新建立表空間
E:從一個備份中恢復表空間(歸檔日誌下才可以)。
2、刪除掛起:在刪除階段發生錯誤,將一直處於刪除掛起狀態。
3、備份掛起:這種策略是強迫使用者對目標表所在的資料庫或者表空間做一個備份。如果load是使用了copy no選項,並且開啟了歸檔日誌,load完後將處於該狀態。做一個備份就可以消除該狀態。
4、檢查掛起的表:當表上存在主鍵和唯一鍵之外的約束時,load完後表將處於該狀態。包括以下情況:
外來鍵約束—用來強制執行內容的完整性。
檢查約束—使用者定義的約束,檢查合法性。
操作中引用了summary表,並且表設定的為refresh immediate。
可以使用如下命令解除該狀態:
SET CONSTRAINTS FOR TABNAME IMMEDIATE CHECKED FOR EXCEPTION IN EXP_TABLE
load和import的不同:
1、load的目標表必須存在,而import不需要
2、load並不建立索引,只是在原來索引的基礎上追加資料
3、最大區別在於效能區別,import每次插入一條,每行都要進行一次限制檢查,日誌用來記錄變化,而load插入則快的多,每次讀取資料構造頁,然後直接輸入到資料庫。插入完頁後,索引將重新建立,違反主鍵和唯一鍵限制的記錄將被刪除並儲存到另一個擴充套件表中。
注:load技巧使用:大資料量刪除。 Db2 下匯出表結構及資料 su db2inst - 進入db2許可權模式 任意建立一個資料夾子 mkdir data 進入資料夾子 cd data 匯出表結構:使用db2look -d 庫名 -e -z 使用者名稱 -l -o exoa.sql 匯出資料:使用db2move 庫名 export 可使用以下命令檢視: db2look -help or db2move -help 打包已匯出的表結構與資料 tar zcvf 目錄名.tar.gz 目錄名/ 在新的db2匯入資料 建立資料庫: db2 create db 庫名 匯入表結構操作:db2 -tvf 檔名.sql 匯入資料操作:db2move 新建庫名 load 匯出表中資料 export to [path(例:D:/TABLE1.ixf)] of ixf select [欄位(例: * or col1,col2,col3)] from TABLE1; export to [path(例:D:/TABLE1.del)] of del select [欄位(例: * or col1,col2,col3)] from TABLE1; 匯入表的資料 import from [path(例:D:/TABLE1.ixf)] of ixf insert into TABLE1; load from [path(例:D:/TABLE1.ixf)] of ixf insert into TABLE1; load from [path(例:D:/TABLE1.ixf)] of ixf replace into TABLE1; // 裝入資料前,先刪除已存在記錄 load from [path(例:D:/TABLE1.ixf)] of ixf restart into TABLE1; // 當裝入失敗時,重新執行 並記錄匯出結果和錯誤資訊 import from [path(例:D:/TABLE1.ixf)] of ixf savecount 1000 messages [path(例:D:/msg.txt)] insert into TABLE1;// 其中,savecount表示完成每1000條操作,記錄一次. 存在自增長欄位的資料匯入: load from [path(例:D:/TABLE1.ixf)] of ixf modified by identityignore insert into TABLE1;// 加入modified by identityignore. 解除裝入資料時,發生的檢查掛起. SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED; 命令只對資料通過約束檢查的表有效,如果執行還不能解除,有必要檢查資料的完整性,是否不符合約束條件,並試圖重新整理資料,再執行裝入操作. 另外,對load和import,字面上的區別是:裝入和匯入,但仍未理解兩者之間的區別. 只是效能上load顯然優於import
連線資料庫: connect to [資料庫名] user [操作使用者名稱] using [密碼] 建立緩衝池(8K): create bufferpool ibmdefault8k IMMEDIATE SIZE 5000 PAGESIZE 8 K ;
建立緩衝池(16K)(OA_DIVERTASKRECORD):
create bufferpool ibmdefault16k IMMEDIATE SIZE 5000 PAGESIZE 16 K ;
建立緩衝池(32K)(OA_TASK):
create bufferpool ibmdefault32k IMMEDIATE SIZE 5000 PAGESIZE 32 K ; 建立表空間: CREATE TABLESPACE exoatbs IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer') EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT8K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TABLESPACE exoatbs16k IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 16K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer16k' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT16K OVERHEAD 24.1 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TABLESPACE exoatbs32k IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 32K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer32k' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT32K OVERHEAD 24.1 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; GRANT USE OF TABLESPACE exoatbs TO PUBLIC;
GRANT USE OF TABLESPACE exoatbs16k TO PUBLIC;
GRANT USE OF TABLESPACE exoatbs32k TO PUBLIC; 建立系統表空間: CREATE TEMPORARY TABLESPACE exoasystmp IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 8K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT8K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TEMPORARY TABLESPACE exoasystmp16k IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 16K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp16k' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT16K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TEMPORARY TABLESPACE exoasystmp32k IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 32K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp32k') EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT32K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; 1. 啟動例項(db2inst1): db2start 2. 停止例項(db2inst1): db2stop 3. 列出所有例項(db2inst1) db2ilist 5.列出當前例項: db2 get instance 4. 察看示例配置檔案: db2 get dbm cfg|more 5. 更新資料庫管理器引數資訊: db2 update dbm cfg using para_name para_value 6. 建立資料庫: db2 create db test 7. 察看資料庫配置引數資訊 db2 get db cfg for test|more 8. 更新資料庫引數配置資訊 db2 update db cfg for test using para_name para_value 10.刪除資料庫: db2 drop db test 11.連線資料庫 db2 connect to test 12.列出所有表空間的詳細資訊。 db2 list tablespaces show detail 13.查詢資料: db2 select * from tb1 14.刪除資料: db2 delete from tb1 where id=1 15.建立索引: db2 create index idx1 on tb1(id); 16.建立檢視: db2 create view view1 as select id from tb1 17.查詢檢視: db2 select * from view1 18.節點編目 db2 catalog tcp node node_name remote server_ip server server_port 19.察看埠號 db2 get dbm cfg|grep SVCENAME 20.測試節點的附接 db2 attach to node_name 21.察看本地節點 db2 list node direcotry 22.節點反編目 db2 uncatalog node node_name 23.資料庫編目 db2 catalog db db_name as db_alias at node node_name 24.察看資料庫的編目 db2 list db directory 25.連線資料庫 db2 connect to db_alias user user_name using user_password 26.資料庫反編目 db2 uncatalog db db_alias 27.匯出資料 db2 export to myfile of ixf messages msg select * from tb1 28.匯入資料 db2 import from myfile of ixf messages msg replace into tb1 29.匯出資料庫的所有表資料 db2move test export 30.生成資料庫的定義 db2look -d db_alias -a -e -m -l -x -f -o db2look.sql 31.建立資料庫 db2 create db test1 32.生成定義 db2 -tvf db2look.sql 33.匯入資料庫所有的資料 db2move db_alias import 34.重組檢查 db2 reorgchk 35.重組表tb1 db2 reorg table tb1 36.更新統計資訊 db2 runstats on table tb1 37.備份資料庫test db2 backup db test 38.恢復資料庫test db2 restore db test 399/.列出容器的資訊 db2 list tablespace containers for tbs_id show detail 40.建立表: db2 ceate table tb1(id integer not null,name char(10)) 41.列出所有表 db2 list tables 42.插入資料: db2 insert into tb1 values(1,’sam’); db2 insert into tb2 values(2,’smitty’); . 建立資料庫DB2_GCB CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32 2. 連線資料庫 connect to sample1 user db2admin using 8301206 3. 建立別名 create alias db2admin.tables for sysstat.tables; CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS create alias db2admin.columns for syscat.columns; create alias guest.columns for syscat.columns; 4. 建立表 create table zjt_tables as (select * from tables) definition only; create table zjt_views as (select * from views) definition only; 5. 插入記錄 insert into zjt_tables select * from tables; insert into zjt_views select * from views; 6. 建立檢視 create view V_zjt_tables as select tabschema,tabname from zjt_tables; 7. 建立觸發器 CREATE TRIGGER zjt_tables_del AFTER DELETE ON zjt_tables REFERENCING OLD AS O FOR EACH ROW MODE DB2SQL Insert into zjt_tables1 values(substr(o.tabschema,1,8),substr(o.tabname,1,10)) 8. 建立唯一性索引 CREATE UNIQUE INDEX I_ztables_tabname [size=3]ON zjt_tables(tabname); 9. 查看錶 select tabname from tables where tabname='ZJT_TABLES'; 10. 檢視列 select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 型別,LENGTH as 長度 from columns where tabname='ZJT_TABLES'; 11. 查看錶結構 db2 describe table user1.department db2 describe select * from user.tables 12. 查看錶的索引 db2 describe indexes for table user1.department 13. 檢視檢視 select viewname from views where viewname='V_ZJT_TABLES'; 14. 檢視索引 select indname from indexes where indname='I_ZTABLES_TABNAME'; 15. 檢視存貯過程 SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15) FROM SYSCAT.PROCEDURES; 16. 型別轉換(cast) ip datatype:varchar select cast(ip as integer)+50 from log_comm_failed 17. 重新連線 connect reset 18. 中斷資料庫連線 disconnect db2_gcb 19. view application LIST APPLICATION; 20. kill application FORCE APPLICATION(0); db2 force applications all (強迫所有應用程式從資料庫斷開) 21. lock table lock table test in exclusive mode 22. 共享 lock table test in share mode 23. 顯示當前使用者所有表 list tables 24. 列出所有的系統表 list tables for system 25. 顯示當前活動資料庫 list active databases 26. 檢視命令選項 list command options 27. 系統資料庫目錄 LIST DATABASE DIRECTORY 28. 表空間 list tablespaces 29. 表空間容器 LIST TABLESPACE CONTAINERS FOR Example: LIST TABLESPACE CONTAINERS FOR 1 30. 顯示使用者資料庫的存取許可權 GET AUTHORIZATIONS 31. 啟動例項 DB2START 32. 停止例項 db2stop 33. 表或檢視特權 grant select,delete,insert,update on tables to user grant all on tables to user WITH GRANT OPTION 34. 程式包特權 GRANT EXECUTE ON PACKAGE PACKAGE-name TO PUBLIC 35. 模式特權 GRANT CREATEIN ON SCHEMA SCHEMA-name TO USER 36. 資料庫特權 grant connect,createtab,dbadm on database to user 37. 索引特權 grant control on index index-name to user 38. 資訊幫助 (? XXXnnnnn ) 例:? SQL30081 39. SQL 幫助(說明 SQL 語句的語法) help statement 例如,help SELECT 40. SQLSTATE 幫助(說明 SQL 的狀態和類別程式碼) ? sqlstate 或 ? class-code 41. 更改與"管理伺服器"相關的口令 db2admin setid username password 42. 建立 SAMPLE 資料庫 db2sampl db2sampl F:(指定安裝盤) 43. 使用作業系統命令 ! dir 44. 轉換資料型別 (cast) SELECT EMPNO, CAST(RESUME AS VARCHAR(370)) FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii' 45. UDF 要執行 DB2 Java 儲存過程或 UDF,還需要更新伺服器上的 DB2 資料庫管理程式配置,以包括在該機器上安裝 JDK 的路徑 db2 update dbm cfg using JDK11_PATH d:sqllibjavajdk TERMINATE update dbm cfg using SPM_NAME sample 46. 檢查 DB2 資料庫管理程式配置 db2 get dbm cfg 47. 檢索具有特權的所有授權名 SELECT DISTINCT GRANTEE, GRANTEETYPE, 'DATABASE' FROM SYSCAT.DBAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'TABLE ' FROM SYSCAT.TABAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'PACKAGE ' FROM SYSCAT.PACKAGEAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'INDEX ' FROM SYSCAT.INDEXAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'COLUMN ' FROM SYSCAT.COLAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SCHEMA ' FROM SYSCAT.SCHEMAAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROM SYSCAT.PASSTHRUAUTH ORDER BY GRANTEE, GRANTEETYPE, 3 create table yhdab (id varchar(10), password varchar(10), ywlx varchar(10), kh varchar(10)); create table ywlbb (ywlbbh varchar(8), ywmc varchar(60)) 48. 修改表結構 alter table yhdab ALTER kh SET DATA TYPE varchar(13); alter table yhdab ALTER ID SET DATA TYPE varchar(13); alter table lst_bsi alter bsi_money set data type int; insert into yhdab values ('20000300001','123456','user01','20000300001'), ('20000300002','123456','user02','20000300002'); 49. 業務型別說明 insert into ywlbb values ('user01','業務申請'), ('user02','業務撤消'), ('user03','費用查詢'), ('user04','費用自繳'), ('user05','費用預存'), ('user06','密碼修改'), ('user07','發票列印'), ('gl01','改使用者基本資訊'), ('gl02','更改支付資訊'), ('gl03','日統計功能'), ('gl04','沖帳功能'), ('gl05','對帳功能'), ('gl06','計費功能'), ('gl07','綜合統計') 備份資料庫:
CONNECT TO EXOA;
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
CONNECT RESET;
BACKUP DATABASE EXOA TO "/home/exoa2/db2bak/" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;
CONNECT TO EXOA;
UNQUIESCE DATABASE;
CONNECT RESET; 以下是小弟在使用db2move中的一些經驗,希望對大家有所幫助。 db2 connect to YOURDB
連線資料庫 db2look -d YOURDB -a -e -x -o creatab.sql
匯出建庫表的SQL db2move YOURDB export
用db2move將資料備份出來 vi creatab.sql
如要匯入的資料庫名與原資料庫不同,要修改creatab.sql中CONNECT 項
如相同則不用更改 db2move NEWDB load
將資料匯入新庫中 在匯入中可能因為種種原因發生中斷,會使資料庫暫掛
db2 list tablespaces show detail
如:
詳細說明:
裝入暫掛
總頁數 = 1652
可用頁數 = 1652
已用頁數 = 1652
空閒頁數 = 不適用
高水位標記(頁) = 不適用
頁大小(位元組) = 4096
盤區大小(頁) = 32
預讀取大小(頁) = 32
容器數 = 1
狀態更改表空間標識 = 2
狀態更改物件標識 = 59 db2 select tabname,tableid from syscat.tables where tableid=59
檢視是哪張表掛起 表名知道後到db2move.lst(在db2move YOURDB export的目錄中)中找到相應的.ixf檔案
db2 load from tab11.ixf of ixf terminate into db2admin.xxxxxxxxx
tab11.ixf對應的是xxxxxxxxx表 資料庫會恢復正常,可再用db2 list tablespaces show detail檢視