[pgsql-jp: 31995] Re: Access 2000からODBC 経由にてデータを転送した場合の問題

岩瀬 肇 iwase-h @ mxy.nes.nec.co.jp
2004年 1月 13日 (火) 16:04:17 JST


お世話になります。岩瀬です。

説明が足りなかったようです。
MS-AccessからPostgreSQLへのデータ転送は以下の手順で行っています。
1.PostgreSQLへデータベースを作成(テーブルは作成しない)
2.MS-Accessにてデータベースを開く
3.テーブルのエクスポートを実施(エクスポート先をODBCドライバにする)
4.ODBCドライバを利用して、PostgreSQLへデータの転送実施

MS-Access上で作成しているので、CREATE TABLE等は一切行っておりません。


それから、「SQL 文自身は case insensitive である」とは
どういう意味でしょうか?辞書等で調べた限り「無感覚な場合」としか
出てこないので、よく意味がわかりません。
申し訳ありませんが、日本語でご説明いただけませんでしょうか?
それとも、英語でないと説明できない事象なのでしょうか?

お答え頂いておいて大変恐縮なのですが、 case insensitive がわからない
ため、半分くらいしか理解できていないようです。。。


JAVAで利用しているというのは、JAVAからPostgreSQLを利用しているという
意味で書かせて頂きました。わかりにくい文章で申し訳ありません。
そのため、JAVAのソース内で利用しているSQL文の全てのフィールド名を
ダブルクォートで囲うのは工数が大きくなってしまうと、お伝えしたかった
のです。

よろしくお願い致します。


> > MS-Access2000からODBCドライバを利用してPostgreSQLへデータ転送を
> > 行った場合、フィールド名に大文字と小文字の混在文字列があると
> > ダブルクォートで囲わないと
> > ERROR: Attribute 'foo' not found (PGError)
> > などと表示されて正常にアクセスできません。
> > 
> > JAVAで利用しているのですが、プログラム側の変更は工数が大きいので
> > できればODBCドライバの設定でなんとかならないかと試行錯誤してみた
> > のですが、うまくいきませんでした。
> 
> 「Java で利用している」という意味がよくわかりませんが、ODBC 云々は
> 関係なくて、最初に CREATE TABLE した時にテーブル名称やカラム名称を
> ダブルクォートでくくる形で指定した事に諸悪の根元(?)があります。
> 
> まだテスト中であり本番ではないのであれば、いった DROP TABLE してから
> CREATE TABLE し直しましょう。
> または ALTER TABLE でもいけるのかな?
> 
> SQL の規格では、SQL 文自身は case insensitive であるとなっています。
> しかし、CREATE TABLE 時にテーブル名称やカラム名称をダブルクォート
> などでくくってしまうとパーサの都合上(だと私は理解していますが)、結果的に
> 問い合わせ SQL 発行時に、テーブル名称やカラム名称に対して case sensitive
> になってしまいます。
> 
> Access からの利用時に Foo と指定しても上記のようなエラーになって
> しまうのであるとすると、ひょっとすると PostgreSQL の ODBC ドライバが
> 小文字への変換を行っているのかも知れませんけれども、それ自身は SQL の
> 規格上から言えば何も問題ないでしょう。
> 
> 個人的には、CREATE TABLE 時にテーブル名称やカラム名称を case sensitive
> として扱うように作るのは、そもそもおかしいと思います。
> しかし、何かの理由でそうせざるをえない事情があったのであれば、プログラム
> 作成時にテーブル名称とカラム名称を必ずダブルクォートでくくる必要が出て
> くるのは当たり前ですので、そう書くしかないと考えます。
> 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> (株) セントラル情報センター
>                              後藤和政    kgotoh @ cic-kk.co.jp

-- 
岩瀬 肇 <iwase-h @ mxy.nes.nec.co.jp>




pgsql-jp メーリングリストの案内