第3回:データの移行(2) (2/2)

まるごと PostgreSQL!
PostgreSQLとOracleによるデータベース相互移行マニュアル

第3回:データの移行(2)
著者:奥畑 裕樹(OKUHATA, Hiroki)   2005/10/20
前のページ  1  2
SQL文の移行

   システム中に埋め込まれたSQL文を移行する場合は、PostgreSQLとOracleのSQL文の違いや、組み込みファンクションの違いに注意する必要があります。特にSQL文の移行でポイントになるのは、SELECT文の移行です。Oracleにある便利な機能がPostgreSQLにはないことが多いので、そうした場合の対処法について知る必要があります。

   では、SELECT文でよく使用する機能について、PostgreSQLとOracleの違いを順番に見ていきましょう。


列の別名

   エイリアスとも言いますが、PostgreSQLでは列に別名を付ける際には、必ずASを付けます。逆にOracleでは必ずしもASを付ける必要はありません。

PostgreSQLの場合
SELECT 担当者名AS "担当者(1960年代)",
         生年月日
   FROM 担当者マスタ
   WHERE 生年月日< '1970-1-1';
Oracleの場合
SELECT 担当者名"担当者(1960年代)",
         生年月日
   FROM 担当者マスタ
   WHERE 生年月日< '1970-1-1';
   その結果は両方とも同じです。

担当者(1960年代)  生年月日
--------------------  --------
鈴木  60-01-23
小野  60-08-02
斎藤  63-10-15
DUAL表

   Oracleでは、SELECT文で特定の表を必要としない場合には、DUAL表というダミーの表を用います。

SELECT 1+1 FROM DUAL;
  1+1  
------ ----  
   
   いっぽう、PostgreSQLではDUAL表のようなものは必要ありません。

SELECT 1+1;
    
?column?  
----------  
2    
(1 row)    
   しかし、Oracle用に書かれたすべてのSQL文を探し出して、FROM DUALを削除するのは面倒です。そこで、PostgreSQLに次のような同名のビューを作成してしまえば移行がラクになります。

CREATE VIEW dual AS
  SELECT 'X'::varchar(1) as DUMMY;
前のページ  1  2


奥畑 裕樹(OKUHATA, Hiroki)
著者プロフィール
奥畑 裕樹(OKUHATA, Hiroki)
Javaとオープンソース技術を得意とする技術コンサルタント。最近のテーマは、ソフトウェア開発の全体最適をはかること。気が付けば、10才のときにプログラミングを始めて以来、常に何かを作っている…。


INDEX
第3回:データの移行(2)
  データの書き出し
SQL文の移行
PostgreSQLとOracleによるデータベース相互移行マニュアル
第1回 データベース移行
第2回 データの移行(1)
第3回 データの移行(2)
第4回 SQL文の移行(1)
第5回 SQL文の移行(2)
第6回 SSQL文の移行(3)
第7回 ファンクションの移行(1)
第8回 ファンクションの移行(2)
第9回 ストアドプロシージャの移行(1)
第10回 ストアドプロシージャの移行(2)
第11回 ストアドプロシージャの移行(3)
第12回 ストアドプロシージャの移行(4)
第13回 まとめ

人気記事トップ10

人気記事ランキングをもっと見る