2017-03-13 12 views
0

でのPostgreSQLからのコピー機能を使用して、私のコピークエリは以下の通りです(私はPHPでそれを実行する)私は、PostgreSQLからコピークエリを使用する必要がftpサーバ

create temp table tmp_food (like food); -- create temporary table like food 

copy tmp_food from 'd:\testingfood.csv' delimiter '|' csv; -- copy to temp table 

insert into food (food_id, food_name) -- insert into food from temp table 
select food_id, food_name 
from tmp_food 
on conflict (food_id) do    -- update instead of error 
update set food_name = excluded.food_name; 

drop table tmp_food;     -- drop temp table 

しかし、事は、私はからそれをコピーする必要があり、あります私はこの行を変更する必要があるので、私はこの行を変更する必要があります

コピー 'tmp_food'から 'ftp \ somefolder'区切り記号 '|' csv; - 一時テーブルへのコピーが

ところでこれはcsvファイルを読むために私のコードですが、私は必要なことは、パスを取得し、私のphpにそれを組み合わせるです

$ftp_server = "127.0.0.1"; 
$ftp_username = "alex"; 
$ftp_userpass = "alex"; 
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); 
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass); 
echo "success connect to FTP"; 
$contents = fread($handle, filesize($filename)); 
echo $contents; 

// close connection 
ftp_close($ftp_conn); 
+1

ローカルディレクトリにまずcsvをコピーする必要があります –

答えて

2

私は、次のオプションを見ることができます:

  • PHPの配列にファイルを読むとPostgreSQL COPY FROM STDINを使用して、一時表にそれをロードするためにpg_copy_fromを使用しています。

  • COPYを実行する前にファイル転送を実行するPL/PerlUのような強力な言語で関数を記述します。

関連する問題