我试图通过浏览器上的PHP脚本将csv文件从linux机器导出到本地PC。
我做了很多研究,但我无法找到我想要的东西(也许它不存在)。
我的脚本通过php连接到数据库并使用localhost,就像我的其他php脚本一样,它只显示数据库中的数据但不会导出数据。
这是我徒劳的尝试:
$user = 'postgres';
$password = 'XXXXX';
$db = 'ltg';
$host = 'localhost';
$conn=pg_connect('dbname ='.$db.' user = '.$user.' password = '.$password.' host = '.$host) or die ("Could not connect: ");
//query for copying/exporting to csv
echo "system(\copy (select lat, lon from ltg_data order by time desc limit 1000) To '~/Downloads/export.csv' CSV HEADER);"
至少有两个问题让我感到困惑。与db的连接适用于从db访问/显示数据。我是否需要使用" localhost"以外的其他内容?导出数据?
其次,运行\ copy命令是有问题的。我不知何故需要运行一个psql元命令来导出数据,我真的不知道如何通过php做到这一点。
非常感谢你的时间。
答案 0 :(得分:1)
问题是system
运行一个shell命令(不确定为什么你会回复它?),所以它根本不会通过$conn
。当然,没有名为\copy
的shell命令。
如果您愿意,可以使用\copy ...
之类的内容向psql
发送system("echo '\copy ....' | psql")
,但是您必须小心逃避参数等。
由于您的数据库已在localhost
,并且您已与postgres
用户建立了联系,因此您可以使用COPY
代替\copy
,并发送通过$conn
命令。
以下是有关COPY
的文档。