在 ftp 服务器上使用 postgresql 的复制功能
Using Copy feature from postgresql with ftp server
我需要使用来自 postgresql 的复制查询,我的复制查询如下(我 运行 它与 php)
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
但问题是,我需要从 ftp 服务器复制它,所以我需要更改此行
copy tmp_food from 'ftp\somefolder' delimiter '|' csv; -- copy to temp table
顺便说一句,这是我读取 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);
我可以看到以下选项:
将文件读入PHP数组并使用pg_copy_from
使用PostgreSQLCOPY FROM STDIN
.[=15]将其加载到临时table =]
用像 PL/PerlU 这样的强大语言编写一个函数,在执行 COPY
.
之前为您执行文件传输
我需要使用来自 postgresql 的复制查询,我的复制查询如下(我 运行 它与 php)
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
但问题是,我需要从 ftp 服务器复制它,所以我需要更改此行
copy tmp_food from 'ftp\somefolder' delimiter '|' csv; -- copy to temp table
顺便说一句,这是我读取 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);
我可以看到以下选项:
将文件读入PHP数组并使用
pg_copy_from
使用PostgreSQLCOPY FROM STDIN
.[=15]将其加载到临时table =]用像 PL/PerlU 这样的强大语言编写一个函数,在执行
COPY
. 之前为您执行文件传输