[pgsql-jp: 35005] Re: accessのmdb のテーブルをpostgresql へ移行したい

tomson tomson_lpcjp @ yahoo.co.jp
2005年 3月 10日 (木) 22:11:12 JST


こんばんは。tomsonともうします。

> 別FreeBSDサーバー内にpostgresqlをインストールしましたので
> そこへyakuhin_data.mdbのテーブルを移行させたいと考えております。

テーブル作製スクリプトは書かれましたか?
もしくはなんらかのツールを使って、CREATE TABLEの入ったスクリプトを用意す
る必要がありますね。

Access 、SQLServerのsql文はSQL92/99とは多少違っていますので、ご注意く
ださい。
Postgresqlのドキュメントを見て、
http://www.postgresql.jp/document/pg745doc/html/datatype.html
カラム属性のデータ型を決定し、制約などもかいてください。

次に、access mdbのデータをcsv等で外部テキストファイルにエクスポートしま
す。区切り文字にはカンマ記号を使います。

マルチバイトの文字が入っている場合には、忘れずに文字コードを変換して置き
ましょう。

EUC-JPに変換し,改行コードをLFにしておけば、間違いないでしょう。

以上がWindows側での操作です。

次に、BSD側での操作ですが、
$PGDATA/postgresql.confで、tcp_socket="true"のコメントが外れているかどう
か確認し、必要ならば、pg_hba.confでアクセスを制限します。
ここらへんの説明は、シーラカンス本に詳しいですので、よく読んで設定して見
てください。案外簡単にできることに驚かれるかもしれません。

次に、データベースを作る必要があります。普通は、psqlを実行するユーザー名
でデータベースを作っておけば、コマンドラインからpsqlを実行すればそのまま
接続するようになっています。

なのでコマンドラインから以下のように操作します。

su postgres

bash$createuser psqlを使うユーザー
 
bash$createdb -U psqlを使うユーザー名

次にデータベースユーザーを作る権限与えるかどうかを聞かれるので n
次にデータベースを作る権限を与えるかどうかをきかれるので n

次にpsqlを実行するユーザーでログイン
bash$su psqlを使うユーザー

つぎにpsqlを実行します。
psqlを使うユーザー$psql

サーバーのpsqlコマンドで \i 先ほどwindowsで作ったSQLスクリプトファイル名
を実行し、テーブルを作ります。

psqlを使うユーザー=>\i SQLスクリプト名

ここでエラーが発生するようであれば、スクリプトの内容をよく確認し、
本当にそのデータ型がposqgresqlでサポートされているのか、調べてください。
また、シーラカンス本をよく確認し、CREATE TABLEの構文に誤りがないか、細部
にまで目を通してください。

テーブルが作製されたら、次に先ほどWindowsで作ったCSVファイルのデータをテ
ーブルにコピーしてやります。

psqlを使うユーザー=>\copy テーブル名 from csvファイル名のパス名

改行コードが違うと、エラーになりますので、注意してください。

以上でデータの移行は終りです。

細かいことは、御自分で勉強なさってください。

WindowsのDBでは経験できなかったような、安定性と正確さをご堪能いただける
と思いますよ。

Good Luck!





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