[PHP-users 12181] Re: 異なるDB間でのクエリー結果受渡し方法

Youichi Iwakiri php-users@php.gr.jp
Wed, 11 Dec 2002 18:59:15 +0900


親善さんの<000901c2a13d$3e97adc0$6909c63d@default>から
>上記環境にてAのPHP上でBのmssql serverに接続し、selectした結果をAのpostgresql
>にcreateしたいというのが案件です。
>異なるDB間でselectした結果をもう片方のDBにcreateするにはどんなやり方があるの
>でしょうか?
>当方で変数で渡すといった手段を試みましたがだめでした。
>--skip--
>$mssql = "select * from mssqltable";
>$get_data = mssql_query($mssql,$db);
>
>$postgre = pg_exec($hDB,"create table test as '$get_data'");
>-------
>御教授頂ければ幸いです。

そもそも、異なるDB間で
CREATE TABLE test AS SELECT * FROM mssqltable;
といったSQLで新規にテーブルの作成はできません。

>$get_data = mssql_query($mssql,$db);

で、$get_dataには何が入っているか理解していますか?

やるなら、
1. mssql_fetch_field()でフィールド情報を取得し、
   PostgreSQL側に発行するCREATE文を生成し、テーブルを作成する
2. mssql_fetch_array()/mssql_fetch_object()で1レコードずつ取得し
   PostgreSQL側でINSERT文を発行し、データを移すしかないです。

#単に丸ごと移すんだったら
#mssql側のコマンドインタフェースで、csv形式で出力できないですかね?
#あとは、pgsqlで、テーブルを作成して、COPY文発行するだけで済みそうな
#ことですが

-- 
Youichi Iwakiri