2011年1月26日 星期三
2010年8月8日 星期日
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日 星期四
2008年6月18日 星期三
2008年6月17日 星期二
2008年6月11日 星期三
[MS SQL , DB2]取得select結果列號 ROW_NUMBER( )
範例:
select ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2 ASC) AS rownumber FROM table
select ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2 ASC) AS rownumber FROM table
2008年5月10日 星期六
DB2 on Windows Vista
艱辛Vista之路......
之前是websphere現在又是DB2, 果然IBM跟MS不愧是百年冤家........
在Vista上的DB2就是無法create database (說我沒啟動database manager,明明就有...)
找了老半天,也懷疑過licence問題, 也使用admin權限跳過UCA, 最新資訊是...
DB2 要v9.1 fix pack 2才支援Vista......
偏偏IBM的網站又非常不人性化, 找個fix pack還真眼花... 倒不如我用google馬上找到.......
好啦 DB2 v9.1的fix pack連結 在此, 花了我這麼多時間載個3百多MB的fix pack, 如果還不行,
那我轉行算了(環境險惡,小弟不才)
----------------------------------------------------------------------------
後記:
感動...小弟不用轉行了...
果然v9.1 FixPack 2 在Vista上正常許多了................
之前是websphere現在又是DB2, 果然IBM跟MS不愧是百年冤家........
在Vista上的DB2就是無法create database (說我沒啟動database manager,明明就有...)
找了老半天,也懷疑過licence問題, 也使用admin權限跳過UCA, 最新資訊是...
DB2 要v9.1 fix pack 2才支援Vista......
偏偏IBM的網站又非常不人性化, 找個fix pack還真眼花... 倒不如我用google馬上找到.......
好啦 DB2 v9.1的fix pack連結 在此, 花了我這麼多時間載個3百多MB的fix pack, 如果還不行,
那我轉行算了(環境險惡,小弟不才)
----------------------------------------------------------------------------
後記:
感動...小弟不用轉行了...
果然v9.1 FixPack 2 在Vista上正常許多了................
DB2使用簡介
除了IBM的官方文檔外, DB2的中文資料真不好找 ,
最近市面上有出了一本「愛上DB2資料庫管理與應用(第二版)」就似乎找不到其他中文書了,
這邊有中研院計算機中心的兩篇電子報文章簡介DB2,雖然是很久前的文章,
但還是可參考看看。
(作者:吳和弟)
DB2使用簡介(上)
DB2使用簡介(下)
最近市面上有出了一本「愛上DB2資料庫管理與應用(第二版)」就似乎找不到其他中文書了,
這邊有中研院計算機中心的兩篇電子報文章簡介DB2,雖然是很久前的文章,
但還是可參考看看。
(作者:吳和弟)
DB2使用簡介(上)
DB2使用簡介(下)
2008年5月9日 星期五
訂閱:
文章 (Atom)