2010年4月30日 星期五

DB2 Import資料時,設定來源資料 Date的格式

在使用 db2 import 指令匯入 DEL 格式的來源資料時,若來源資料中,date資料的表示方式與DB2預設的date表示方式不同,會造成無法匯入資料的問題。此時,可以在import指令中使用 modified by dateformat=’YYYY/MM/DD’來更改DB2預設的 date表現方式。參加下列指令

IMPORT FROM "USERS.csv" OF DEL modified by dateformat="YYYY/M/D" METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) MESSAGES "C:\log"  INSERT INTO DB2ADMIN.USERS (USER_ID, FIRST_NAME, MIDDLE_NAME, LAST_NAME, BIRTHDAY , GENDER, ID_CARD, EMERGENCY_CONTACT, IS_CAREPROVIDER, IS_AA_USE_MAC, ADDRESS, EMAIL, PHONE, STATUS, CREATE_TIME, ID, UPDATED)

以下舉幾個date表現方式的例子 (注意1個M和2個M的差別):

YYYY/MM/DD:   可以對應到   1978/01/01
YYYY/M/D:       可以對應到   1978/1/1

2010年4月24日 星期六

使用 DB2 pureXML的功能將XML文件Shred到 Relational Tables

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本介紹使用的例子是在這篇 developerworks文章所附的範例。將這個範例解開後,可發現內含下列內容

image

其中,crdb及crtable分別為建立資料庫及 表格的SQL指令。首先需先使用這兩個檔案,建立所需的表格。而mail.xml是要匯入的XML檔案;mails.xsd則為該XML的schema檔案。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

在DB2 V9中,可以使用下列兩種方式,將XML文件轉成Relational表格儲存

  1. 使用 Annotated XML decomposition功能
  2. 使用 XMLTABLE  functional call

其中,第一種方式需要將Annotated 過的 XML Schema註冊到 DB2的 XML Schema Repository(XSR)。Data Studio這個免費的程式可以協助在XML schema中進行annotation。Annotate 完成之後,再將其註冊到XSR中。註冊的方式有很多種,可以使用DB2 Command Line、呼叫DB2 提供的 Stored Procedure,或是直接用Java程式,透過DB2提供的JDBC Driver進行。這裡先介紹使用Command Line的方式

  1. REGISTER    XMLSCHEMA     ADD    'http://yourschemaURI'    FROM      'Schema檔案所在位置'     AS  userSchemaName.SchemaName
  2. 如果要匯入的XML Schema由多個Schema檔案組成,先使用上面的指令匯入主要的Schema後,再使用下列指令,加入其它的Schema檔案 
    ADD    XMLSCHEMA    DOCUMENT      TO     userSchemaName.SchemaName       ADD     ‘http://anotherSchemaURL’   FROM        ‘Schema檔案所在位置’
  3. 使用下列指令,完成Schema的註冊
    COMPLETE     XMLSCHEMA         userSchemaName.SchemaName

上面所述的  userSchemaName.SchemaName中, userSchemaName指的是 DB2的 Schema命名空間名稱;而SchemaName則是指匯入的Schema的XML Schema命名空間。

註冊完成後,還需啟用所匯入的Schema的 XML Decomposition功能。指令如下:
ALTER      XSROBJECT    xsrObjectName       ENABLE        DECOMPOSITION

最後,透過下列程式,可以將一個XML文件內容,轉成Relational Table。

///////////////////////////////////////////////////////////////////////////////
import java.sql.*;
import java.io.*;
public class AnnotatedXMLDecomposition {
/**這個程式用來測試使用DB2提供的Annotated XML Decomposition方法,來將XML的資料 parse到Relational Table中
* 使用這個方法來shred XML的前提是,DB2的 XSR(XML Schema Repository)必需先註冊要 Shred文件的 XML Schema。
* 註冊XML Schema的方法有很多,最簡單的方法是在DB2 Command Line中,執行下列指令
*      REGISTER XMLSCHEMA ADD 'http://yourschemaURI'
*                    FROM 'SchemaFileLocation' AS  userSchemaName.SchemaName
*     
*      其中,userSchemaName指的是 DB2的 current Schema name
*
*/
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String url = "jdbc:db2:MAILDCMP";
        try {
            Class.forName("com.ibm.db2.jcc.DB2Driver");
            Connection con = DriverManager.getConnection(url);//取得Connection
            String sql = "{CALL xdbDecompXML(?,?,?,?,?,NULL,NULL,NULL)}";
            CallableStatement cstmt = con.prepareCall(sql);
            String filename = "E:/DB2_pureXML_Study/mail/mail/mail.xml";
            File currFile = new File(filename);
            long length = currFile.length();
            //設定DB2 current Schema名稱
            cstmt.setString(1, "BIOFLASH");
            //設定 XML Schema名稱
            cstmt.setString(2, "MAILSCHEMA");
            //讀入XML文件
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(currFile));
            cstmt.setBinaryStream(3,bis, (int) length);
            //XML 文件 ID
            cstmt.setString(4, "TEST001");
            //設定要不要進行XML的 Schema validation
            int validate = 1;
            cstmt.setInt(5, validate);
            //其它的參數先放為NULL
            cstmt.execute();
            con.commit();
            cstmt.close();
        }
        catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch (SQLException e){
            e.printStackTrace();
        }
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
        }
    }

}

/////////////////////////////////////////////////////////

2010年4月14日 星期三

WebSphere Portal安裝

Portal的安裝有下列兩種模式

  • Administration:只安裝Administration portlet
  • Full:安裝Portal Server出廠時,內建的所有portlet

Portal的安裝Script檔名是install.bat,在安裝Portal時,它會去check系統是否已經有裝了WAS,若它找不到WAS的位置,可以傳入一個參數給install.bat,如下所示,安裝精靈就會到該目錄下尋找之前裝過的 WAS
   install.bat -W was.undetectedWas="/my/WAS/location".

安裝Portal時,可以設定讓Portal自行決定要用那些port,若在安裝完成後,想要知道Portal用了那些port,可以在wp_profile/ConfigEngine目錄下,執行下列指令
            ConfigEngine.bat list-server-ports -DWasPassword=password

可將port資訊寫到
wp_profile_root\ConfigEngine\log\wp_PortMatrix.txt 檔案中














2010年4月5日 星期一

如何刪除 WAS Profile

一般來說,刪除WASProfile需透過 WAS/AppServer/bin/manageprofile.bat –delete –profileName PROFILE 來刪除profile。但是在一次的執行動作中,發生了錯誤,經過檢視錯誤的log後,發現其實可以直接刪除記錄在WAS/AppServer/properties/profileRegistry.xml中的profileName,然後直接而刪除 profile所在的目錄即可。

另外,如果WAS安裝過程中,已將該WAS profile設為 windows service,另需刪除該Service,方法如下

  1. 打開regedit
  2. 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,找到相對應的service,把它刪除
  3. 重開機

不過以上方法還是建議在正常方法無法刪除的情況下才使用