詳閱:
http://www.51testing.com/?uid-16403-action-viewspace-itemid-106533
2010年4月8日 星期四
2010年3月24日 星期三
2009年5月11日 星期一
2009年3月8日 星期日
DB2中系統自動產生的table (Explain_、TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception)
在使用DB2時,會發現有些table明明不是我們自己建的table莫名其妙的跑了出來。
這些table通常都是以Explain_為開頭,或table名稱格式為TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception,這些table的功用為:
這些table通常都是以Explain_為開頭,或table名稱格式為TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception,這些table的功用為:
- Explain:
DB2中 EXPLAIN_開頭的table為DB2執行計畫工具所產的表格,主要存放SQL 執行計畫(Execute Plan)。
通常在DB2 Client工具第一次用到 執行計劃 功能 會自動建立,如下圖。或由DBA透過執行(DB2安裝目錄)/sqllib/misc/EXPLAIN.DDL腳本產生。
關於這組table的詳細資訊可參考:
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/r0008441.htm - table名稱格式為TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception:
執行 DB2 Load公用程式 或 DB2控制中心 工具做匯入資料時,若有違反 table Constraint無法寫入資料時,會將暫存資料和無法寫入的資料放在這兩個table中。
2008年7月12日 星期六
2008年7月11日 星期五
DB2中文問題
哀阿...
昨天才從同事口中得知中文varchar在DB2 UTF-8資料庫中一個中文字有三個bytes怎會如此咧??
OK......
先看看下面:
-- DB
-- codePage =1208 (=x04B8) Unicode - UTF-8
-- codeSet = UTF-8
-- TERRITORY = TW
CREATE DATABASE TESTDB ON c: USING CODESET UTF-8 TERRITORY TW COLLATE USING IDENTITY ;
create table test (field1 varchar(10)); --10 byte
insert into test values('1234567890'); --ok
insert into test values('一二三四五六七八九零'); --err , too long
insert into test values(N'一二三四五六七八九零'); --err, too long
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test --30,10
create table test2 (field2 vargraphic(10) ); --30 byte
insert into test2 values('1234567890'); --ok
insert into test2 values('一二三四五六七890'); --ok
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test2; --30,10
select length(field2) from test2;
select field2,length(field2) AS LEN from test2 --不論中英文,每個字元在string function中長度都是1
select field2,Substr(field2,1,2) from test2 --Graphic也可以用於字串函數
-- 所以varGraphic= MSSQL的nvarchar
-- N'xxxStr' 代表 varGraphic型態
所以說在開table時下的ddl應該使用Graphic和varGraphic型態,
在使用起來會比較順...
至於char和graphic差在哪... 會不會有效能上的考量....
找到資料後再說......
===================================================================
另外幾個與DB2中文處理的相關文章:
昨天才從同事口中得知中文varchar在DB2 UTF-8資料庫中一個中文字有三個bytes怎會如此咧??
OK......
先看看下面:
-- DB
-- codePage =1208 (=x04B8) Unicode - UTF-8
-- codeSet = UTF-8
-- TERRITORY = TW
CREATE DATABASE TESTDB ON c: USING CODESET UTF-8 TERRITORY TW COLLATE USING IDENTITY ;
create table test (field1 varchar(10)); --10 byte
insert into test values('1234567890'); --ok
insert into test values('一二三四五六七八九零'); --err , too long
insert into test values(N'一二三四五六七八九零'); --err, too long
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test --30,10
create table test2 (field2 vargraphic(10) ); --30 byte
insert into test2 values('1234567890'); --ok
insert into test2 values('一二三四五六七890'); --ok
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test2; --30,10
select length(field2) from test2;
select field2,length(field2) AS LEN from test2 --不論中英文,每個字元在string function中長度都是1
select field2,Substr(field2,1,2) from test2 --Graphic也可以用於字串函數
-- 所以varGraphic= MSSQL的nvarchar
-- N'xxxStr' 代表 varGraphic型態
所以說在開table時下的ddl應該使用Graphic和varGraphic型態,
在使用起來會比較順...
至於char和graphic差在哪... 會不會有效能上的考量....
找到資料後再說......
===================================================================
另外幾個與DB2中文處理的相關文章:
2008年7月10日 星期四
訂閱:
文章 (Atom)