我正试图通过浏览器上的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);"
至少有两个问题让我感到困惑。与数据库的连接可以很好地访问/显示数据库中的数据。我是否需要使用"localhost"以外的东西来导出数据?
其次,运行''copy命令有问题。不知何故,我需要运行一个psql-meta命令来导出数据,但我真的不知道如何通过php来做到这一点。
非常感谢您抽出时间。
问题是system
运行一个shell命令(不确定为什么要回显它?),所以它根本不通过$conn
。当然,没有一个shell命令叫做'copy
。
如果你愿意,你可以用类似system("echo ''copy ....' | psql")
的东西将'copy ...
发送到psql
,但你必须小心转义参数等。
由于您的数据库位于localhost
上,并且您已经与postgres
用户连接,因此您可以使用COPY
而不是'copy
,并通过$conn
发送命令。
这是关于COPY
的文档。