[pgsql-jp: 29634] Re: ODBC経由でのMS-Access からPostgreSQLへのデータ移行

Chie.M gontakun @ fish.co.jp
2003年 4月 14日 (月) 17:22:48 JST


Chieです。

エクスポートのテストをしてみました。
Access側に、長整数型で既定値が0のフィールドを1つ持つテーブル
「test_exp」を作成し、ODBC経由でPostgreSQLにエクスポートしてみました。
エクスポートはできました。

ただ、長整数型はint4になりましたが、既定値は反映されませんでした。

それ以上のテストはしていませんが、
おそらく、インデックスがついていても反映されないように思います。

岩瀬さんのエクスポートしたテーブルの場合も、型だけでなく
インデックスや既定値などで引っかかっている可能性もあると思います。

> > エクスポートをするよりも、PostgreSQLからリンクしたテーブルに
> > 正しい形に修正したデータで追加クエリーをかけた方が楽かもしれません。
> > ご質問の参考になってなくてすみません。。
> 
> すいません、ちょっとわからないのですが、PostgreSQL側にODBCを
> インストールしてPostgreSQL側から繋いで取り込んだ方が楽だと
> いうことでしょうか?

PostgreSQL側にODBCをインストールするとは???
すでに、AccessとPostgreSQLがつながっているなら、それ以上
ODBCをインストールする必要はないと思いますが。。。

PostgreSQL側にテーブルを作成してから
Accessにリンクを貼って、そこへAccessのテーブルデータを
追加クエリーすると言う事です。

この時、日付型などはFormat関数等を使用し、PostgreSQLで
使える形に変換しておくと良いと思います。

これで判りますでしょうか?

> > ちなみに、私の場合は、Accessと同じようなテーブルをPostgreSQLに
> > 作成する為に、DAO使ってテーブルオブジェクトを参照し、
> > CREATE TABLE文をテキストに吐き出し、CHECK制約や型や権限などを、
> > 追加修正してからPostgreSQLへ流すという作業をしました。
> 
> 勉強不足ですいません。こちらも教えてください。
> DAOを使ってCREATE文をテキストにはき出す方法をよく知らないのですが、
> 何か参考になるページがあればお教え願えないでしょうか?

えーっと・・・
「 DAOを使ってCREATE文をテキストにはき出す方法」というものが
存在するわけじゃないです。
そういう関数を自作するしかないです。

簡単に言うと、DAOでテーブルオブジェクトにアクセスすることで
テーブル名、フィールド名、型名を取得できます。
DAOのProperties コレクションを使います。

こうして取得したデータに、CREATE TABLE ・・・などの文字列を追加して
適正なSQL文に生成した後、それをテキストに吐き出すというようなものです。

テキストに吐き出すためには、VBAのOpen ステートメントを使用します。

このあたりは全くPostgreSQLと関係ないので(^_^;)
Accessのサイトをあたった方がよいと思います。

googleなどで「Access DAO」なんて検索すると沢山ヒットします。

私の場合はテーブルが100個くらいあったのでこのようにしたのですが
テーブルが少なくて、DAOも判らないというのであれば
PostgreSQLに直接テーブルを作成した方が早いと思います。

----------------------------
Chie.M <gontakun @ fish.co.jp>




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