Мне нужно использовать запрос на копирование из 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-сервера, поэтому мне нужно изменить эту строку
скопируйте 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);
Я вижу следующие варианты:
Считайте файл в массив PHP и используйте pg_copy_from
загрузить его во временную таблицу, используя PostgreSQL COPY FROM STDIN
,
Напишите функцию на таком мощном языке, как PL / Pērļu который выполняет передачу файла для вас перед выполнением COPY
,
Других решений пока нет …