(現在 過去ログ26 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■4091 / inTopicNo.21)  Re[6]: 桐でのODBC接続について
  
□投稿者/ 長門孝雄 -(2008/11/26(Wed) 18:37:19)
    No4077に返信(うにんさんの記事)
    > 前に桐からPgsqlに追加書き出ししたら常に上書きになってたので、追加できる
    > 絞り込む必要性がわかりませんが、追加書き出しの代りなら読み込みで代替できるのでは?何で実用的でないんだろう。

    1ケ年以上の売上データなので、絞り込まないと読み込みに時間がかかり
    現在正常稼動していないので絞り込んで読み込みでも時間がかかります。

引用返信 [メール受信/OFF] 削除キー/
■4092 / inTopicNo.22)  Re[6]: 桐でのODBC接続について
□投稿者/ 長門孝雄 -(2008/11/26(Wed) 18:43:29)
    No4075に返信(hidetakeさんの記事)

    > ODBC の設定はレジストリの次のところにあります。
    >
    > [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]
    >
    > ここおよび下位の情報を見れば設定内容は把握でき
    > ると思います。
    了解しました。今度実行してみます。
    正常稼動するようになったら、読み込みで対処するつもりです。
    ありがとうございました。


引用返信 [メール受信/OFF] 削除キー/
■4093 / inTopicNo.23)  Re[7]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 19:11:14)
    >>ODBC の設定はレジストリの次のところにあります。
    >>[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]
    >>
    > 正常稼動するようになったら、読み込みで対処するつもりです。
    > ありがとうございました。
    >

    すみません。説明不足だったかも知れません。

    自分は、古い桐時代に ODBC の設定は「システムDSN」
    に設定しないと、桐の接続の場面にデータソース名が
    出てこないことがあって、それ以来、私自身は基本的に
    システムDSNに設定して使用していますが、現在において
    は、セキュリティ的にも、桐の説明にのっとっても
    「ユーザー DSN」に登録して使うのが、基本的になって
    いると思います。(桐のマニュアルでもそうなっています)

    従いまして、この場合のレジストリは

    [HKEY_CURRENT_USER\Software\ODBC]

    の方にあります。お使いのデータソースがシステムか
    ユーザかで、レジストリの位置は異なりますので、お使い
    の状況にあわせて、見比べてみてください。


引用返信 [メール受信/OFF] 削除キー/
■4095 / inTopicNo.24)  Re[7]: 桐でのODBC接続について
□投稿者/ おたけ -(2008/11/27(Thu) 00:14:57)
    >>外部データーベースへの追加書き出しなんて、データ型揃わないのは当たり前ですよ。

    気になるので自分も実験的に試してみました
    試しに文字列型のvarchar()項目へ小数点が入っているデーターを更新させたらどうなりますか
    桐で言う数値型項目から外部接続でINT型への更新なり挿入を行っているのではないでしょうか?
    家で試してみたらオラクルじゃないけど、サーバーのDB側がint型のデーターだと桐が接続を試
    みれば勝手に長整数型にデーター型を読み込みました、小数点切り捨てられました
    また目的のDB項目がfloat型だと桐は実数型として読み込み小数点も問題なくDB側に上書き更新されました
    ですから、サーバー側のDBに対する項目ごとの型が問題になってるんじゃないでしょうか?
    はずしてたら、ごめんなさい。

引用返信 [メール受信/OFF] 削除キー/
■4096 / inTopicNo.25)  Re[8]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 03:06:45)
    > 今回の例だと、桐側が ORACLE 側の型を取り間違えて
    > 15.50 を 15 に切り捨てて INSERT したように思うの
    > ですが、それとは違うのでしょうか?
    > 桐側は 15.50 でデータを渡しているけど ORALE 側が
    > 切り捨てているのでしょうか?

    サーバ PostgreSQL 7.2.2 に
    ODBC ドライバ 8.02.04.02 で
    桐から書き出し(追加)を行う場合の
    ログを取ってみました。

    テーブルは
    CREATE TABLE "NUM1" (
    NUM numeric(9,2));

    CREATE TABLE "NUM2" (
    NUM numeric(9,0));

    CREATE TABLE "INT" (
    NUM int2);

    Oracle の NUMBER型は NUMBER(p,s)は
    PostgreSQL の場合の (ANSI SQL) の
    NUMERIC(p,s) なので NUMERIC型を代用。

    の3種類に桐の数値型項目(num)から
    15.5 の値を書き出してみたのです
    が、

    結局、桐側は

    query='insert into "NUM1" ("num") VALUES ( '15.5')'
    query='insert into "NUM2" ("num") VALUES ( '15.5')'
    query='insert into "INT" ("num") VALUES ( 15.5)'

    と、15.5 で INSERT かけてますね。
    結果の値は numeric(9,2) 以外は 16 に丸められますけど。

    しかし、ここで 15.5 も桐は INT型に関しては数値で
    投げかけているけど、NUMERIC型に関しては文字列で
    INSERT かけてしまっています。

    この時の Oracle の受け取り結果で 15 に丸められているの
    でしょうか?
    桐は何故に numeric型に対して '' で括ったデータを渡して
    いるのかな?


引用返信 [メール受信/OFF] 削除キー/
■4099 / inTopicNo.26)  Re[9]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 07:40:24)
    2008/11/27(Thu) 08:41:39 編集(投稿者)

    > サーバ PostgreSQL 7.2.2 に
    > ODBC ドライバ 8.02.04.02 で
    > 桐から書き出し(追加)を行う場合の
    > ログを取ってみました。

    > テーブルは
    > CREATE TABLE "NUM1" (
    > NUM numeric(9,2));

    ついでに、書き出し(追加)では無く、上記テーブルにキー
    を追加して、桐の外部DBからの接続からも更新が出来るように
    して 15.5 の行を追加してみました。

    query='INSERT INTO "NUM1" ( "num") VALUES ('15.5')'

    と、VALUES ('15.5') で INSERT しています。

    PostgreSQL では、これでもこちらの期待通りに値が設定され
    ますが、もし、Oracle で
    query='INSERT INTO "NUM1" ( "num") VALUES (15.5)'

    query='INSERT INTO "NUM1" ( "num") VALUES ('15.5')'
    で、直接でも良いので SQL を投げかけて、Oracle では
    どのような挙動を示すのか!?

    もし、下の方の結果が 15 となるのだったら、桐 + Oracle
    では、この型の使用は困難になってくるのでしょうかね?
    Oracle の NUMBER型に対して、桐がこの事例のような挙動を
    するとして。

引用返信 [メール受信/OFF] 削除キー/
■4102 / inTopicNo.27)  Re[9]: 桐でのODBC接続について
□投稿者/ 通りすがり -(2008/11/27(Thu) 10:49:17)
    オラクルでは内部で実際に最下位のゼロも格納してるから、
    元々、MS製のオラクル用ODBC Driver はNUMBER(9,2)とかは SQL_C_CHAR で返してたので、(StripTrailingZero parameter も無かった)
    桐は忠実にそのまんまってことじゃねえの?

    最近のオラクル用ODBC Driver は変わったみたいだけど、桐は対応を変更してない為かと
引用返信 [メール受信/OFF] 削除キー/
■4103 / inTopicNo.28)  Re[10]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 11:07:26)
    2008/11/27(Thu) 11:12:00 編集(投稿者)

    これ以上の事は相手方のデータベースや ODBCドライバの種類や
    バージョンによっても違う可能性もあるので、詳しくは長門さん
    のところでログでも取って調べるしかないでしょうね。

    自分が追加で調べた限り、PostgreSQL + 桐9-2009 では
    int型や numeric型は先の通りでして、real(float4)型 と
    timestamp型に対しては、同様に ' ' で括ってデータを投げかけ
    ますが、'15.5'::float4 や '2001-01-31 00:00:00'::timestamp
    のように型を明示的に指定して INSERT していました。

    これは桐が直接投げかけているというか ODBCドライバが補って
    いるのかわかりませんが・・・

    あと、Oracle がNUMBER型の項目に対してテキストリテラルの反応は
    http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/sql_elements.html#41977
    を見るかぎり Oracle のバージョンは違うけれど、
    NLS_NUMERIC_CHARACTERS をデフォルトのピリオド(.)から変更して
    いない限り特に問題は無いようにしか取れませんでした。


引用返信 [メール受信/OFF] 削除キー/
■4104 / inTopicNo.29)  Re[11]: 桐でのODBC接続について
□投稿者/ 長門孝雄 -(2008/11/27(Thu) 14:23:00)
    No4103に返信(hidetakeさんの記事)
    > 2008/11/27(Thu) 11:12:00 編集(投稿者)
    >
    > これ以上の事は相手方のデータベースや ODBCドライバの種類や
    > バージョンによっても違う可能性もあるので、詳しくは長門さん
    > のところでログでも取って調べるしかないでしょうね。
    >
    ちょっと自分では手に負えませんので、予備機を稼動させて諸設定を追加し
    読み込みで対処しようと思います。
    いろいろとお付き合いくださりありがとうございました。
引用返信 [メール受信/OFF] 削除キー/
■4105 / inTopicNo.30)  Re[12]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 17:00:49)
    > 読み込みで対処しようと思います。

    読み込みでは大丈夫なのですかね?

    もし、今の不安定な機種のみの動作であれば
    設定をやり直して正常になれば書き出しでも
    うまくいくのかも?知れません。


引用返信 [メール受信/OFF] 削除キー/

<前の20件

トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -