過去の桐井戸端BBS (桐ver.8)
6157 桐の表定義をSQLに変換は可能? 野良犬 2000/05/26-13:57
 みなさんこんにちは。

 桐の表定義を、SQLに変換するツールなどは存在するのでしょうか?
情報をお持ちの方おられません?
6161 Re:SQLに変換は可能? 佐田 守弘 2000/05/27-12:39
記事番号6157へのコメント
野良犬さん
先に確認させて頂きます。
>桐の表定義を、SQLに変換するツールなどは存在するのでしょうか?
は、結合表の定義をSQLに変換したいとの意味ですね。

桐は内部的にSQLエンジンを持っているらしい事は確かな様ですが、生のSQLは全く外から見えなくなっています。
おそらく結合表の実行とか外部DBの機能のためにSQLが内緒で使われているのでしょうね。
私が調べた限りでは、結合表自体は表とほとんど同じ様な構造の様で、
SQLは書かれていません。従って、結合を実行する時や、外部DBにアクセスする時に、
一時的にSQLが作られるだけだろうと思います。

少なくとも、Accessなどの外部DBに投げ掛けられるのは、SQLであるはずなので、これを横取りすれば、
SQLが得られるとも言えますが、これはちょっと難しいと思います。

私がベクターのサイトを調べた限りでは、フリーソフトやシェアウエアなどに
該当するツールは見つかりませんでした。

佐田守弘(KS-00119)
6169 Re:SQLに変換は可能? hidetake 2000/05/27-19:26
記事番号6161へのコメント
試してみたことは無いので詳細はわかりませんが、会話処理の書き出しや
コマンドの「書き出し条件登録」に「外部DB」と言う項目があります。

SQL 文を作成するものではありませんが、表自体を外部DBに作成する事は可能です。
試しに Access の MDB に書き出してみましたが、レコードが0件の場合でも構造のみ書き出せ、
MDB 側にレコード0件のテーブルが作成されました。
桐は内部的に SQL の CREATE TABLE 文も持っているので、相手にテーブルが無い場合はこれを使っていると思います。

他の DB で使うための SQL 文自体が欲しい場合は、桐のテーブル構造をK3 で書き出し、
それを一旦別のテーブルに読み込み、項目名やデータ型、それに項目長を SQL にあうように変換し、
テキスト書き出しし CREATE TABLEをくっつけるような手順になるのでしょうか...
頻繁に使うなら一括処理を書くことでも可能ですね。


と思ってこれを書いていたら、上の外部DB書き出しを行った後で、作業ディレクトリを見てみると、
TEMP.SQL なるファイルがあり、その中身は
-------------------------------------------------------------------
create table `TEST` ( `区分1` CHAR(10),`受番` CHAR(10),`仮番`
CHAR(10),`分類` CHAR(10),`担当者` CHAR(10),`受注者` CHAR(10),`点検者`
CHAR(10),`T_CODE` CHAR(10),`得意先` CHAR(10),`H_CODE` CHAR(10),`品名`
CHAR(10) )
-------------------------------------------------------------------
の様な、まさしく SQL 文が残っていました。 (@_@;
桐は作業用の SQL 文を消し忘れるのか?
これってバグ?

6171 Re:SQLに変換は可能? hidetake 2000/05/27-22:04
記事番号6161へのコメント
>私が調べた限りでは、結合表自体は表とほとんど同じ様な構造の様で、SQLは
>書かれていません。従って、結合を実行する時や、外部DBにアクセスする時に、
>一時的にSQLが作られるだけだろうと思います。

結合表については #4945 で書いたとおり SQL文は .XVW 内部に保持しています。
ただし、これは桐内部で使うための書式であり、また桐の通例として1バイト文字も2バイトで保持しているため、
頭に x00 がついております。
BTYPE.COM とか持っていれば、BTYPE.COM -DJ FILENAME.XVW > FILENAME.DMP
とかすれば簡単に確認できます。

もし、必要なものが結合表であったら、必要な DB あるいはツール側で作った方が便利だし、
敢えて桐側のものを外に持ち出す必要も無いでしょう...

6172 Re:SQLに変換は可能? 野良犬 2000/05/28-01:34
記事番号6171へのコメント
佐田さんhidetakeさんコメントありがとうございます。
欲しかったのは主に通常の表定義のほうで、目的は桐で
作成されたシステムをRDBMSに移行するなんです。

 桐の表定義からSQL-DDLが作成できたら楽だとおもいまして。
書き出し|外部DB でSQLが取れるのは試してみる価値がありそうです。

6173 Re:SQLに変換は可能? hidetake 2000/05/28-06:17
記事番号6172へのコメント
野良犬さん、DDL と言う言葉まで御存知なので SQL に詳しくない私が書くことも無いと思いますが、
DB でまず一番重要になるのがテーブル設計です。

桐では、リレーショナルな機能があまり使えませんし、表だけでの入力や編集も行われることから、
正規化もあまり重要視されません。
それに対し、本当の DB は正規化を行った上で、パフォーマンスとの兼ね合いで逆正規化を
行うような手法が取られます。

また、桐で持っているデータ型を今度御使いの DB のどのデータ型に合わせるかと言うことも発生します。
CHAR にするか VARCHAR にするか VARCHAR2 にするか TEXT にするか LONG にするだとか...
それに、主キーの設定や、Null 値の取り扱いも発生します。

桐側では一応データ型の変換は入っているデータ長も考慮し SQL を作成するようですが、
主キーや Null 値の取り扱いまでは反映してくれません。

従って、今度御使いの DB で最適化されたテーブルを作成するためには、
設計者側が充分考慮し再設計が必要になると思います。
それを考えると、単純に落とせるのはほとんど項目名だけになってしまうようで、
結局最初から自分で SQL 書いてもそんなに変わらないような気もしますが、
どんなものなのでしょうか?

6190 Re:SQLに変換は可能? hidetake 2000/05/29-01:42
記事番号6161へのコメント
>桐は内部的にSQLエンジンを持っているらしい事は確かな様ですが、

桐が SQLエンジンまで搭載しているというのは本当?
単に SQL文を作成するためのインターフェイスを持っているのならともかく、
エンジンまで搭載しているのだったら、外部からアクセスするための ODBC
ドライバも簡単に作れると言うこと? だとしたら欲しい...
あるいは、通常の選択や併合も内部的には SQLに変換して実行していると言うこと?
外部DBに関しては、SQL文作って単に投げかけるだけでは無いのでしょうか?

戻る