(57)【要約】【課題】  移行元のクエリを、移行先の適切なフォーマットに変換することを可能にするデータ変換方法を提供する。【解決手段】  所定の変換表を基にＡＣＣＥＳＳのクエリのＳＱＬ文の第１および第２のテーブルデータを生成する。そして、第２のテーブルデータの各ラインのデータを、クエリの種類に応じた順序で読み出し手、括弧を付加して変数に順に代入する。最終的な変数の値が第３のテーブルデータに代入され、ＳＱＬ  Ｓｅｒｖｅｒで処理可能な変換後のクエリとして処理される。【選択図】  図３
2011248507.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースシステムで規定された複数の第１クエリを有する第１のプログラムを、第２データベースで処理可能な複数の第２クエリを有する第２のプログラムに変換するデータ変換方法であって、
前記第１のデータベースシステムで規定された前記第１のクエリの各々について、当該第１のクエリのクエリ種別データと、当該クエリの文字列に含まれるテーブル名データと、フィールド名データおよび句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する第１の工程と、
予め決められた変換表に基づいて、前記第１のテーブルデータ内の前記ライン内のデータを、前記第２のデータベースシステムで規定された表現に変換した第２のテーブルデータを生成する第２の工程と、
前記第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出し、当該読み出した結合パターンデータが示す順序に基づいて、前記第２のテーブルデータの前記ライン内のデータを順に読み出し、当該読み出したデータの前記テーブル名データおよび前記フィールド名データに、前記第２のデータベースシステムが名前として識別する識別子を付加した後に所定の変数に順に格納する第３の工程と、
前記結合パターンデータによって予め決められた前記第２のテーブルデータの最後のラインのデータの前記変数への格納が完了すると、前記第２のデータベースシステムで用いられる第３のテーブルデータ内の前記第１のクエリに対応したライン内の変換後クエリの項目に前記変数に格納されたデータを格納する第４の工程と
をコンピュータの処理回路が実行するデータ変換方法。
【請求項２】
前記第１クエリ内にサブクエリが存在する場合には、当該サブクエリについて前記第１のテーブルデータを生成する工程
を前記コンピュータがさらに実行し、
最下層の前記サブクエリから順に前記第２の工程および前記第３の工程を実行し、当該サブクエリについての処理結果をその上位のクエリの前記第２のテーブルデータの対応するラインに戻す処理を行う
請求項１に記載のデータ変換方法。
【請求項３】
前記第１の工程は、前記第１のクエリについて、当該第１のクエリ内の文字列をトレースして、当該第１クエリの文字列開始位置を示す属性データを格納した前記ラインと、前記第１クエリのクエリ種別データを示す属性データを格納した前記ラインと、当該第１のクエリのテーブル名またはクエリ名を示す属性データとそのテーブル名データまたはクエリ名データを格納した前記ラインと、前記テーブル名のテーブルのフィールド名を示す属性データとそのフィールド名データを格納した前記ラインと、当該第１のクエリの終了位置を示す属性データを格納した前記ラインとを備えた前記第１のテーブルデータを生成する
請求項１または請求項２に記載のデータ変換方法。
【請求項４】
前記第３の工程は、
前記読み出したデータ内にサブクエリが含まれるか否かを判断し、前記読み出したデータのうち、前記サブクエリ以外のデータの前記クエリ名データおよびテーブル名データに前記識別子を付加して前記変数に格納する
請求項３に記載のデータ変換方法。
【請求項５】
前記第３の工程は、前記第１のデータベースシステムが前記第１のプログラムに対して自動的に生成し、前記第１のプログラムで使用されている正規の前記テーブル名データの管理データを参照して、当該第１のプログラムで正規に使用されていると判断されたことを条件に、前記テーブル名データに前記識別子を付加する処理を行う
請求項１〜４のいずれかに記載のデータ変換方法。
【請求項６】
前記第１のテーブルデータの前記ラインに、前記第１のクエリのクエリ名データが格納される場合に、
前記第３の工程は、前記読み出したデータの前記クエリ名データに前記識別子を付加する
請求項２〜５のいずれかに記載のデータ変換方法。
【請求項７】
前記第１のクエリのクエリ名データと、前記第１のテーブルデータのメモリ内のアドレスとを対応付けて示すクエリ管理データを有し、
前記第３の工程は、前記クエリ管理データ内の前記クエリ名データに前記識別子を付加する処理を行う
請求項２〜６のいずれかに記載のデータ変換方法。
【請求項８】
第１のデータベースシステムで規定された複数の第１クエリを有する第１のプログラムを、第２データベースで処理可能な複数の第２クエリを有する第２のプログラムに変換するデータ変換装置であって、
前記第１のデータベースシステムで規定された前記第１のクエリの各々について、当該第１のクエリのクエリ種別データと、当該クエリの文字列に含まれるテーブル名データと、フィールド名データおよび句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する第１のテーブル生成手段と、
予め決められた変換表に基づいて、前記第１のテーブルデータ内の前記ライン内のデータを、前記第２のデータベースシステムで規定された表現に変換した第２のテーブルデータを生成する第２のテーブル生成手段と、
前記第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出し、当該読み出した結合パターンデータが示す順序に基づいて、前記第２のテーブルデータの前記ライン内のデータを順に読み出し、当該読み出したデータの前記テーブル名データおよび前記フィールド名データに、前記第２のデータベースシステムが名前として識別する識別子を付加した後に所定の変数に順に格納する第括弧・結合処理手段と、
前記結合パターンデータによって予め決められた前記第２のテーブルデータの最後のラインのデータの前記変数への格納が完了すると、第３のテーブルデータ内の前記第１のクエリに対応したライン内の変換後クエリの項目に前記変数に格納されたデータを格納する第３のテーブル生成手段と
を有するデータ変換装置。
【請求項９】
第１のデータベースシステムで規定された複数の第１クエリを有する第１のプログラムを、第２データベースで処理可能な複数の第２クエリを有する第２のプログラムに変換する処理をコンピュータに実行させるプログラムであって、
前記第１のデータベースシステムで規定された前記第１のクエリの各々について、当該第１のクエリのクエリ種別データと、当該クエリの文字列に含まれるテーブル名データと、フィールド名データおよび句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する第１の工程と、
予め決められた変換表に基づいて、前記第１のテーブルデータ内の前記ライン内のデータを、前記第２のデータベースシステムで規定された表現に変換した第２のテーブルデータを生成する第２の工程と、
前記第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出し、当該読み出した結合パターンデータが示す順序に基づいて、前記第２のテーブルデータの前記ライン内のデータを順に読み出し、当該読み出したデータの前記テーブル名データおよび前記フィールド名データに、前記第２のデータベースシステムが名前として識別する識別子を付加した後に所定の変数に順に格納する第３の工程と、
前記結合パターンデータによって予め決められた前記第２のテーブルデータの最後のラインのデータの前記変数への格納が完了すると、第３のテーブルデータ内の前記第１のクエリに対応したライン内の変換後クエリの項目に前記変数に格納されたデータを格納する第４の工程と
を前記コンピュータに実行させる記述を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムの移行に伴う処理を行うデータ変換方法、その装置およびそのプログラムに関する。
【背景技術】
【０００２】
事業規模の変化などに応じて、所定のデータベースシステムから他のデータベースシステムへ移行する場合がある。かかるデータベースシステムの移行に関する技術としては、例えば特許文献１に開示された技術がある。
【０００３】
特許文献１記載されているように、データベースシステムに使用可能なＳＱＬ文はシステム毎に異なっている。そこで、特許文献１のシステムにおいては、ＧＵＩ技術とＳＱＬ文自動変換処理とを連携させることによりデータベースシステムをスムーズに移行するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３５１７１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１において変換対象としているのはＳＱＬ文自体であるが、ＳＱＬ文のフォーマットは多様であり、その全ての構文を分析して、変換することができないという問題がある。
また、例えば、移行元のデータベースシステムがマイクロソフト社のＡｃｃｅｓｓ(商標)であり、移行先のデータベースシステムが同じくマイクロソフト社のＳＱＬ  Ｓｅｒｖｅｒである場合に、Ａｃｃｅｓｓを用いてユーザが規定したクエリ名、テーブル名、フィールド名等が、ＳＱＬ  Ｓｅｒｖｅｒにおいて、特定の意味が割り当てられており、意図していない解釈が行われたり、解釈不能になることがある。
【０００６】
そこで、本発明は、移行元のクエリ（ＳＱＬ文）を、移行先の適切なフォーマットに変換することを可能にするデータ変換方法、その装置およびそのプログラム法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した従来技術の問題を解決し、上述した目的を達成するために、本発明のデータ変換方法は、本発明のデータ変換方法は、第１のデータベースシステムで規定された複数の第１クエリを有する第１のプログラムを、第２データベースで処理可能な複数の第２クエリを有する第２のプログラムに変換するデータ変換方法であって、前記第１のデータベースシステムで規定された前記第１のクエリの各々について、当該第１のクエリのクエリ種別データと、当該クエリの文字列に含まれるテーブル名データと、フィールド名データおよび句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する第１の工程と、予め決められた変換表に基づいて、前記第１のテーブルデータ内の前記ライン内のデータを、前記第２のデータベースシステムで規定された表現に変換した第２のテーブルデータを生成する第２の工程と、前記第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出し、当該読み出した結合パターンデータが示す順序に基づいて、前記第２のテーブルデータの前記ライン内のデータを順に読み出し、当該読み出したデータの前記テーブル名データおよび前記フィールド名データに、前記第２のデータベースシステムが名前として識別する識別子を付加した後に所定の変数に順に格納する第３の工程と、前記結合パターンデータによって予め決められた前記第２のテーブルデータの最後のラインのデータの前記変数への格納が完了すると、第３のテーブルデータ内の前記第１のクエリに対応したライン内の変換後クエリの項目に前記変数に格納されたデータを格納する第４の工程とをコンピュータの処理回路が実行する。
【０００８】
好適には、本発明のデータ変換方法は、前記第１クエリ内にサブクエリが存在する場合には、当該サブクエリについて前記第１のテーブルデータを生成する工程を前記コンピュータがさらに実行し、最下層の前記サブクエリから順に前記第２の工程および前記第３の工程を実行し、当該サブクエリについての処理結果をその上位のクエリの前記第２のテーブルデータの対応するラインに戻す処理を行う。
好適には、本発明のデータ変換方法の前記第３の工程は、前記読み出したデータ内にサブクエリが含まれるか否かを判断し、前記読み出したデータのうち、前記サブクエリ以外のデータの前記クエリ名データおよびテーブル名データに前記識別子を付加して前記変数に格納する。
好適には、本発明のデータ変換方法の前記第３の工程は、前記第１のデータベースシステムが前記第１のプログラムに対して自動的に生成し、前記第１のプログラムで使用されている正規の前記テーブル名データの管理データを参照して、当該第１のプログラムで正規に使用されていると判断されたことを条件に、前記テーブル名データに前記識別子を付加する処理を行う。
【０００９】
好適には、本発明のデータ変換方法は、前記第１のテーブルデータの前記ラインに、前記第１のクエリのクエリ名データが格納される場合に、前記第３の工程は、前記読み出したデータの前記クエリ名データに前記識別子を付加する。
好適には、本発明のデータ変換方法は、前記第１のクエリのクエリ名データと、前記第１のテーブルデータのメモリ内のアドレスとを対応付けて示すクエリ管理データを有し、前記第３の工程は、前記クエリ管理データ内の前記クエリ名データに前記識別子を付加する処理を行う。
【００１０】
本発明のデータ変換装置は、第１のデータベースシステムで規定された複数の第１クエリを有する第１のプログラムを、第２データベースで処理可能な複数の第２クエリを有する第２のプログラムに変換するデータ変換装置であって、前記第１のデータベースシステムで規定された前記第１のクエリの各々について、当該第１のクエリのクエリ種別データと、当該クエリの文字列に含まれるテーブル名データと、フィールド名データおよび句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する第１のテーブル生成手段と、予め決められた変換表に基づいて、前記第１のテーブルデータ内の前記ライン内のデータを、前記第２のデータベースシステムで規定された表現に変換した第２のテーブルデータを生成する第２のテーブル生成手段と、前記第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出し、当該読み出した結合パターンデータが示す順序に基づいて、前記第２のテーブルデータの前記ライン内のデータを順に読み出し、当該読み出したデータの前記テーブル名データおよび前記フィールド名データに、前記第２のデータベースシステムが名前として識別する識別子を付加した後に所定の変数に順に格納する第括弧・結合処理手段と、前記結合パターンデータによって予め決められた前記第２のテーブルデータの最後のラインのデータの前記変数への格納が完了すると、第３のテーブルデータ内の前記第１のクエリに対応したライン内の変換後クエリの項目に前記変数に格納されたデータを格納する第３のテーブル生成手段とを有する。
【００１１】
本発明のプログラムは、第１のデータベースシステムで規定された複数の第１クエリを有する第１のプログラムを、第２データベースで処理可能な複数の第２クエリを有する第２のプログラムに変換する処理をコンピュータに実行させるプログラムであって、
前記第１のデータベースシステムで規定された前記第１のクエリの各々について、当該第１のクエリのクエリ種別データと、当該クエリの文字列に含まれるテーブル名データと、フィールド名データおよび句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する第１の工程と、予め決められた変換表に基づいて、前記第１のテーブルデータ内の前記ライン内のデータを、前記第２のデータベースシステムで規定された表現に変換した第２のテーブルデータを生成する第２の工程と、前記第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出し、当該読み出した結合パターンデータが示す順序に基づいて、前記第２のテーブルデータの前記ライン内のデータを順に読み出し、当該読み出したデータの前記テーブル名データおよび前記フィールド名データに、前記第２のデータベースシステムが名前として識別する識別子を付加した後に所定の変数に順に格納する第３の工程と、前記結合パターンデータによって予め決められた前記第２のテーブルデータの最後のラインのデータの前記変数への格納が完了すると、第３のテーブルデータ内の前記第１のクエリに対応したライン内の変換後クエリの項目に前記変数に格納されたデータを格納する第４の工程とを前記コンピュータに実行させる記述を含む。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施形態に係わるデータ変換装置の変換元システムと変先システムとを説明するための図である。
【図２】図２は、本発明の実施形態に係わるデータ変換装置の構成図である。
【図３】図３は、図２に示すデータ変換装置の処理の概要を説明するためのフローチャートである。
【図４】図４は、図２に示すデータ変換装置のサブクエリに関する処理を説明するためのフローチャートである。
【図５】図５は、図４に示すステップＳＴ２２の処理を説明するためのフローチャートである。
【図６】図６は、図４に示すステップＳＴ２２の処理を説明するためのフローチャートである。
【図７】図７は、図２に示すデータ変換装置が、第１のテーブルデータを作成する際に用いる変換表データを説明するための図である。
【図８】図８は、図２に示すデータ変換装置が、第１のテーブルデータを作成する際に用いる変換表データを説明するための図である。
【図９】図９は、本発明の実施形態の変換対象のＳＱＬ文を説明するための図である。
【図１０】図１０は、図９に示すＳＱＬ文を基に生成した第１のテーブルデータを説明するための図である。
【図１１】図１１は、図１０に示すサブクエリの第１のテーブルデータを説明するための図である。
【図１２】図１２は、図３に示すステップＳＴ２の変換で用いられる変換テーブルを説明するための図である。
【図１３】図１３は、図２に示すステップＳＴ３，ＳＴ４の処理を詳細に説明するためのフローチャートである。
【図１４】図１４は、図１３に示すステップＳＴ６２、ＳＴ６３の処理を説明するための図である。
【図１５】図１５は、変換後の図９に示すＳＱＬ文を説明するための図である。
【図１６】図１６は、図１３に示すステップＳＴ６３の処理を説明するためのフローチャートである。
【図１７】図１７は、本発明の実施形態の第３のテーブルデータを説明するための図である。
【図１８】図１８は、図２に示すデータ変換装置のハードウエア構成の一例を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に係わるデータ変換装置について説明する。
移行元の関係データベースシステムがマイロソフト社のＡｃｃｅｓｓであり、移行先のデータベースシステムが同じくマイクロソフト社のＳＱＬ  Ｓｅｒｖｅｒである場合を例にして、本実施形態のデータ変換装置を説明する。
なお、移行元及び移行先のデータベースシステムは、これらに限定されるものではない。
【００１４】
ところで、関係データベースシステムでは、クエリという、データベース管理システムに対する処理要求(問い合わせ)を文字列を用いて、データの検索や更新、削除などの命令をシステムに発行する。検索クエリでは、対象となるテーブルやデータの抽出条件、並べ方などを指定する。一度生成したクエリは保存しておいて何度も使うことができる。
関係データベースでシステムでは、クエリの記述にＳＱＬという言語を使う。
【００１５】
マイクロソフト社のＡｃｃｅｓｓ等のような汎用的な関係データべース（本発明の第１のデータベースシステムの一例）では、パフォーマンスやスケラビリティよりも、初心者でもプログラムできるように、クエリのタイプは定めていない。
一方、ＳＱＬ  Ｓｅｒｖｅｒ等のより高度なデータベース（本発明の第２のデータベースシステムの一例）では、複数のクエリのタイプを用意し、それぞれのクエリについて記述方法等の制約を設けている。これは、データベースを基盤とするアプリケーションのパフォーマンスとスケーラビリティを向上させるためである。
本実施形態では、図１に示すように、マイクロソフト社のＡｃｃｅｓｓのプログラム（ＳＱＬ文）を、ＳＱＬ  Ｓｅｒｖｅｒで処理可能なプログラムに変換するデータ変換装置について説明する。
【００１６】
以下、本発明の実施形態に係わるデータ変換装置の具体例を説明する。
図２は、本発明の実施形態に係わるデータ変換装置１の機能ブロック図である。
図２に示すように、データ変換装置１は、例えば、第１テーブル生成部１１、第２テーブル生成部１３、括弧・結合処理部１５および第３テーブル更新部１７を有する。
【００１７】
図３は、図２に示すデータ変換装置１による処理手順を説明するためのフローチャートである。
ステップＳＴ１：
第１テーブル生成部１１は、変換対象のＡｃｃｅｓｓのプログラムに含まれる変換前クエリの各々について、当該変換前のクエリのクエリ種別データ、テーブル名データ、フィールド名データ、句名データを個別に格納する複数のライン（例えば、列）を備えた第１のテーブルデータを生成する。
【００１８】
ステップＳＴ２：
第２テーブル生成部１３は、予め決められた変換表に基づいて、ステップＳＴ１で生成した第１のテーブルデータ内の前記ライン内の名前を、ＳＱＬ  Ｓｅｒｖｅｒで規定された表現に変換した第２のテーブルデータを生成する。
【００１９】
ステップＳＴ３：
括弧・結合処理部１５は、ステップＳＴ２で生成した第２のテーブルデータ内の前記クエリ種別データを基に、当該クエリ種別データに予め対応付けられた結合パターンデータをメモリから読み出す。
そして、括弧・結合処理部１５は、当該読み出した結合パターンデータが示す順序に基づいて、第２のテーブルデータのライン内のデータを順に読み出し、当該ライン内のクエリ名データ、テーブル名データおよびフィールド名データに、ＳＱＬ  Ｓｅｒｖｅｒにおいて名前として識別する識別子である括弧（［  ］）を自動的に付加した後に、第２のデータベースシステムで規定されたフォーマットの形式で変数に順に格納する。
【００２０】
ステップＳＴ４：
第３テーブル更新部１７は、上記結合パターンデータによって最後に上記変数に格納することが示されたデータを当該変数に格納すると、第３のテーブルデータ内の当該クエリに対応したラインの変換後クエリ(AfterSQL)の項目に、当該変数のデータを格納する。
この第３のテーブルデータの変換後クエリは、上記ＳＱＬ  Ｓｅｒｖｅｒで処理可能なクエリが格納される項目である。
【００２１】
データ変換装置１は、上述したステップＳＴ２あるいはＳＴ３の処理過程で、図４に示すようにサブクエリがある場合に、それを他の文字列から分割する処理を行い、分割したサブクエリについて第１のテーブルデータを生成し、メモリに格納する。
【００２２】
以下、図４に示す各ステップを説明する。
図４に示す処理は、例えば、図３に示すステップＳＴ１において各クエリの処理を行う過程で実行される。
ステップＳＴ２１：
データ変換装置１（あるいは装置１の処理回路）は、第１のテーブルデータの各ライン内のデータがサブクエリを含むか否かを判断し、サブクエリを含むと判断したことを条件にステップＳＴ２２に進む。
【００２３】
ステップＳＴ２２：
データ変換装置１は、ステップＳＴ２１でサブクリエを含むと判断したラインのデータを、サブクエリと、それ以外の部分に分割する。当該処理については、後に詳細に説明する。
【００２４】
ステップＳＴ２３：
データ変換装置１は、ステップＳＴ２２で分割したサブクエリの第１テーブルデータを生成する。
【００２５】
以下、図４のステップＳＴ２２におけるサブクエリの分割処理を詳細に説明する。
データ変換装置１は、第１のテーブルデータのラインのうちサブクリエが含まれているラインについて以下の分割処理を行う。
図５および図６は、図４のステップＳＴ２２におけるサブクエリの分割処理を説明するためのフローチャートである。
ステップＳＴ３１：
データ変換装置１（あるいは装置１の処理回路）は、当該ライン内のデータ左位置から１文字データを抽出して変数Ｘに入れる。
【００２６】
ステップＳＴ３２：
データ変換装置１は、フラグデータが「１」を示す（前文字列の抽出を完了したことを示す）か否かを判断し、「１」を示すと判断した場合にステップＳＴ３７に進み、そうでない場合にはステップＳＴ３３に進む。
【００２７】
ステップＳＴ３３：
データ変換装置１は、処理対象となるライン内で、「（ＳＥＬＥＣＴ」の文字位置を検出(抽出)する。
【００２８】
ステップＳＴ３４：
データ変換装置１は、ステップＳＴ３１で抽出した文字位置が、ステップＳＴ３３で検出した「（ＳＥＬＥＣＴ」の文字位置と一致するか否かを判断し、一致すると判断した場合にステップＳＴ３５に進み、そうでない場合にはステップＳＴ３１に戻る。
【００２９】
ステップＳＴ３５：
データ変換装置１は、変数Ｘに蓄積されたデータ（前文字列データ）を変数Ａ１に代入する。
【００３０】
ステップＳＴ３６：
データ変換装置１は、フラグデータを「１」に設定する。また、データ変換装置１は、変数Ｘをクリアする。
【００３１】
ステップＳＴ３７：
データ変換装置１は、変数Ｘに、前文字列に続く文字データを変数Ｘに代入する。
【００３２】
ステップＳＴ３８：
データ変換装置１は、カウンタ変数Ｃが「０」で、且つ、抽出した文字が「）」であるという条件を満たしたか否かを判断し、満たしたと判断するとステップＳＴ４０に進み、そうでない場合にはステップＳＴ３９に進む。カウンタ変数Ｃには初期値として「０」が格納されている。
【００３３】
ステップＳＴ３９：
データ変換装置１は、抽出した文字が「）」であると判断するとカウントＣの値を１だけインクリメントし、抽出した文字が「（」であると判断するとカウントＣの値を１だけデクリメントする。その後、データ変換装置１は、ステップＳＴ３７に戻る。
【００３４】
ステップＳＴ４０：
データ変換装置１は、変数Ｘに蓄積されたデータ（サブクエリデータ）を変数Ａ２に代入する。
【００３５】
ステップＳＴ４１：
データ変換装置１は、フラグデータを「０」に設定する。また、データ変換装置１は、変数Ｘをクリアする。
【００３６】
ステップＳＴ４２：
データ変換装置１は、当該ライン内の次の文字から最後の文字までを抽出して変数Ａ３に入れる。
【００３７】
対象文字データが、以下である場合には、変数Ａ１，Ａ２，Ａ３は以下のようになる。
(((社員.ID)=(SELECT 社員.ID
FROM 社員 WHERE (((社員.ID)=1)))))
【００３８】
変数Ａ１＝「(((社員.ID)=(」
変数Ａ２＝「SELECT 社員.ID FROM 社員
WHERE (((社員.ID)=1))」
変数Ａ３＝「)))」
【００３９】
以下、図３に示す上述した各ステップの処理を詳細に説明する。
［ステップＳＴ１］
第１テーブル生成部１１は、メモリに記憶された図７および図８に示す変換表データを基に、変換対象のＡｃｃｅｓｓの変換前クエリの各々について、当該変換前のクエリのクエリ種別データ、テーブル名データ、フィールド名データと、句名データとを個別に格納する複数のラインを備えた第１のテーブルデータを生成する。
具体的には、第１テーブル生成部１１は、例えば、図９に示すＡｃｃｅｓｓのＳＱＬ文データに対して以下に示す処理を行う。
【００４０】
すなわち、第１テーブル生成部１１は、変換対象のＡｃｃｅｓｓのＳＱＬ文データをトレースし、例えば、クエリ名を検出すると、（Attribute、Flag）＝（０，０）のラインを第２のテーブルデータ内に作成し、続いて、クエリ名が「ＳＥＬＥＣＴ」であるため、（Attribute、Flag）＝（１，１）のラインを追加する。続いて、テーブル名「Ｔａｂｌｅ＿１」を検出するため、（Attribute、Flag）＝（５，  ）のラインを第２のテーブルデータ内に追加する。このように、第１テーブル生成部１１は、変換対象のＡｃｃｅｓｓのプログラムを先頭から順次トレースし、図７および図８に示す属性テーブルデータを用いてラインを第２のテーブルデータに追加していく。
これにより、第１テーブル生成部１１は、図１０に示す第２のテーブルデータを生成する。
また、データ変換装置１は、図１０に示す第２のテーブルデータを生成する過程で、図４に示すステップＳＴ２２，ＳＴ２３の処理を実行して、例えば、図１１に示すようにサブクリエの第１のテーブルデータを生成および保存する。
【００４１】
［ステップＳＴ２］
第２テーブル生成部１３は、予め決められた変換表に基づいて、ステップＳＴ１で生成した第１のテーブルデータ内の前記ライン内の名前を、ＳＱＬ  Ｓｅｒｖｅｒで規定された表現に変換した第２のテーブルデータを生成する。
図１２は、当該変換表の一例である。
【００４２】
［ステップＳＴ３］
図１３は、図３に示すステップＳＴ３の処理を説明するためのフローチャートである。
なお、データ変換装置１は、最下層のサブクリエから最上位階層のクリエに向けて順に図１３に示す処理を行う。
以下、図１３に示す各ステップを詳細に説明する。
【００４３】
ステップＳＴ６１：
括弧・結合処理部１５は、ステップＳＴ２で生成した第２のテーブルデータ内のクエリ種別データを基に、それに対応した結合パターンデータをメモリから読み出す。
当該結合パターンデータは、それに対応付けられた変換前クエリについて、そのクエリの変換後クエリを生成する際に、当該変換前クエリの第２のテーブルデータからラインを読み出し手組み立てる順序を示している。
例えば、図１０に示す「ＳＥＬＥＣＴ」の第２のテーブルデータの各ラインは、データ変換装置１によって図１４に示す（１−１）〜（１−７）のように解釈されて読み出され、結合パターンデータは、「（１−２）＋（１−４）＋（１−３）＋（１−５）＋（１−６）」の順で結合することを示している。
【００４４】
ステップＳＴ６２：
括弧・結合処理部１５は、ステップＳＴ６１で読み出した結合パターンデータが示す順序で、第２のテーブルデータのラインのデータを読み出す。
【００４５】
ステップＳＴ６３：
括弧・結合処理部１５は、図１４に示すように、ステップＳＴ６２で読み出したデータ内のクリエ名データ、テーブル名データ、フィールド名データを囲む括弧（［］）を付ける処理を行う。
【００４６】
ステップＳＴ６４：
括弧・結合処理部１５は、ステップＳＴ６２，６３の処理の順序に処理後のラインのデータを変数Ｙに代入する。これにより、変数Ｙには、結合パターンデータが示す順で、第２のテーブルデータのラインから読み出されたデータが順に結合されたデータが保持される。
【００４７】
ステップＳＴ６５：
括弧・結合処理部１５は、ステップＳＴ６１で読み出した結合パターンに示された全てのラインのデータを変数Ｙに代入して結合する処理を終了したか否かを判断し、終了したと判断するとステップＳＴ６６に進み、そうでない場合にはステップＳＴ６２に進む。
【００４８】
ステップＳＴ６６：
括弧・結合処理部１５は、処理対象がサブクエリの場合に、それについて変数Ｙに代入されたデータ(結合文字列データ)を、その上位のクエリ（あるいはサブクエリ）の対応するラインに戻す処理を行う。
【００４９】
ステップＳＴ６７：
括弧・結合処理部１５は、処理対象がクエリであり、その内部の全てのサブクエリの変換後のデータが戻されている場合に、それについて変数Ｙに代入されたデータ(結合文字列データ)を、第３のテーブルデータ内の当該クエリの「AfterSQL」の項目に格納する処理を行う。
【００５０】
上述した処理により、図９に示す変換前クエリは、図１５に示す変換後クエリに変換される。
【００５１】
図１０に示す（１−４）についての処理は、例えば、以下の手順で実行される。
変数Ｙ＝ＳＥＬＥＣＴ：
「Table_1.Field_1」を括って「[Table_1].[Field_1]」を生成する処理：
変数Ｙ＝ＳＥＬＥＣＴ [Table_1].[Field_1]：
「Table_1.Field_2」を括って「[Table_1].[Field_2]」を生成する処理：
変数Ｙ＝ＳＥＬＥＣＴ [Table_1].[Field_1], [Table_1].[Field_2]：
「Table_1.Field_3」を括って「[Table_1].[Field_3]」を生成する処理：
変数Ｙ＝ＳＥＬＥＣＴ [Table_1].[Field_1], [Table_1].[Field_2], [Table_1].[Field_3]：
【００５２】
以下、図１３に示すステップＳＴ６３の処理を説明する。
図１６は、図１３に示すステップＳＴ６３の処理を説明するためのフローチャートである。
各ステップについて説明する。
ステップＳＴ７１：
括弧・結合処理部１５は、第２のテーブルデータ内の各ライン内のサブクエリ以外の文字データから、クエリ名データおよびテーブル名データを抽出する。
【００５３】
ステップＳＴ７２：
括弧・結合処理部１５は、ステップＳＴ７１で取得したクエリ名およびテーブル名データが、予め用意された管理データ内に登録されているか印加を判断し、登録されているものについてのみステップＳＴ７３、ＳＴ７４の処理を行う。
当該管理データは、変換前のプログラムを基にＡｃｃｅｓｓにおいて自動的に生成される。
【００５４】
ステップＳＴ７３：
括弧・結合処理部１５は、ステップＳＴ７２で登録されていると判定されたクエリ名データ、テーブル名データの前に「［」を挿入し、後に「］」を挿入する処理を行う。
【００５５】
ステップＳＴ７４：
括弧・結合処理部１５は、フィールド名データおよび別名データの前に「［」を挿入し、後に「］」を挿入する処理を行う。
【００５６】
なお、クエリ名データと、そのクエリの第１および第２のテーブルデータのメモリ内でのアドレスとは対応付けて管理するクエリ管理データが規定されている。上記括弧を付ける処理は、当該クエリ管理データ内のクエリ名データに対しても行うようにしてもよい。
【００５７】
［ステップＳＴ４］
図１７は、第３のテーブルデータの一例を説明するための図である。
図１７に示すように、第３のテーブルデータは、クエリ名（QueryName）と、ＳＱＬ（そのクエリの図９のＳＱＬ文）と、変換後のＳＱＬ（図１５のＳＱＬ文）と、サブクエリ名（SubQuery）の項目を有している。
ＳＱＬ  Ｓｅｒｖｅｒは、図１７に示す第３のテーブルデータを用いてＳＱＬ文の処理が可能である。
【００５８】
以上説明したように、データ変換装置１によれば、Ａｃｃｅｓｓのプログラム内のクエリに対して図７および図８に示す変換表データを用いて、図１０に示す第１（第２）のテーブルデータを作成し、以後、これを基に変換処理を行う。このような第１のテーブルデータを中間段階で生成することで、多様な種類の変換前クエリを、一定のルールに従った共通のテーブルデータとして扱うこと可能になり、変換効率を高めることができる。
【００５９】
上述した実施形態では、図１３〜図１６等を用いて説明したように、変換前クエリのテーブル名データ、クエリ名データ、フィールド名データおよび別名データに対して、ＳＱＬ  Ｓｅｒｖｅｒにおいて名前として識別される識別子である括弧を自動的に付加する。そのため、ユーザが自由に決定できるテーブル名データ、クエリ名データ、フィールド名データおよび別名データのなかにＳＱＬ  Ｓｅｒｖｅｒにおいて特定の意味を持つ名前として解釈されるものがあったとしても、変換後に、Ａｃｃｅｓｓにおけるプログラミングの際の本来の意図である名前としてとして、ＳＱＬ  Ｓｅｒｖｅｒにおいても解釈させることができる。これにより、誤動作を無くすことができる。
【００６０】
また、上述した実施形態では、図１０に示す第１（第２）のテーブルデータの各ラインを、変換前クエリの種類に基づいて規定された結合パターンデータを基に決められた順で読み出して結合して変換後クエリを生成する。このように複数の変換前クエリにつては、同じアルゴリズムで第１のテーブルデータを作成し、固有の結合パターンデータを用いるだけで、多様な変換前クエリの変換処理に対応することができる。これにより、システム構築に伴う負担を小さくできる。
【００６１】
また、上述した実施形態では、図４に示すように、サブクエリについて第１のテーブルデータを自動的に生成し、通常のクエリと同様に、図１３および図１６に示す処理を行う。そのため、サブクエリについて適切に変換処理を行うことができる。
【００６２】
また、上述した実施形態では、図１６に示すようにＡＣＣＥＳＳが自動生成する使用御しているクエリを示すテーブルデータ内に登録されているか否かを判断し、登録されている判断した場合にのみ括弧で括る処理を行う。そのため、正規に登録されていない名前についてはＳＱＬ  Ｓｅｒｖｅｒでの処理でエラーとなり、バグを発見できる。
また、フィールド名データおよび句名データを括弧で括る処理（ＳＴ７４）を、テーブル名データおよびクエリ名データを括弧で括る処理（ＳＴ７５）より先に行うことで、テーブル名データおよびクエリ名データの名前が正規登録されているかを検証する処理と、括弧で括る処理とを連続した処理として規定することができ、ＳＴ７５をＳＴ７４より前に行う場合に比べて、処理効率を高めることができる。
【００６３】
上述した図３に示すデータ変換装置１は、例えば、図１４に示すハードウェアによって実現される。
図１４に示すように、データ変換装置１は、例えば、インタフェース２１、ディスプレイ２２、操作部２３、メモリ２４および処理回路２５を有し、これらがバス２０を介して接続されている。
【００６４】
インタフェース２１は、例えば、他のコンピュータと通信を行うために用いられる。
ディスプレイ２２は、処理回路２５が実行するプログラムＰＲＧが提供する様々な画面を表示する。
【００６５】
操作部２３は、キーボードやマウス等の操作手段である。
メモリ２４は、処理回路２５が実行するプログラムＰＲＧ、処理回路２５の処理に用いられるデータを一時的に記憶する。
処理回路２５は、プログラムＰＲＧを実行して、データ変換装置１の処理を統括的に制御する。処理回路２５は、本実施形態のフローチャート等で記載した各処理において、処理過程でのデータを逐次メモリ２４に書き込み、それを読み出す。
本実施形態で示されるデータ変換装置１の処理は、プログラムＰＲＧに記述されている。
【００６６】
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
例えば上述した実施形態では、移行元の関係データベースシステム（第１のデータベースシステム）がマイロソフト社のＡｃｃｅｓｓであり、移行先のデータベースシステム（第２のデータベースシステム）が同じくマイクロソフト社のＳＱＬ  Ｓｅｒｖｅｒである場合を例にして、本実施形態のデータ変換装置を説明した。
本発明の上述した請求項１等の記載した機能を持つものあれば移行先および移行元のデータベースシステムは特に限定されない。
また、上述した実施形態では、図１６に示すステップＳＴ７３、Ｓ７４に示すように、テーブル名データ、クエリ名データ、フィールド名データおよび句名データに括弧（［］）を付加する場合を例示したが、第２のデータベースシステムにおいて、テーブル名、クエリ名、フィールド名および句名として解釈されるものであれば、その他の識別子を付すようにしてもよい。
【符号の説明】
【００６７】
１…データ変換装置
１１…第１テーブル生成部
１３…第２テーブル生成部
１５…括弧・結合処理部
１７…第３テーブル更新部
【図１】
2011248507.tif 000003
【図２】
2011248507.tif 000004
【図３】
2011248507.tif 000005
【図４】
2011248507.tif 000006
【図５】
2011248507.tif 000007
【図６】
2011248507.tif 000008
【図７】
2011248507.tif 000009
【図８】
2011248507.tif 000010
【図９】
2011248507.tif 000011
【図１０】
2011248507.tif 000012
【図１１】
2011248507.tif 000013
【図１２】
2011248507.tif 000014
【図１３】
2011248507.tif 000015
【図１４】
2011248507.tif 000016
【図１５】
2011248507.tif 000017
【図１６】
2011248507.tif 000018
【図１７】
2011248507.tif 000019
【図１８】
2011248507.tif 000020