我有一个自定义软件,其中包括一个功能,以复制数据之间的postgresql服务器的表。它一次做一行,当服务器很接近时,这是很好的,但当我开始部署延迟> 300ms的服务器时,这根本不能很好地工作。
我相信解决方案是使用"COPY“语句,但我在实现它时遇到了困难。我正在使用ADODB php library
当我尝试从文件复制时,我得到错误“必须是超级用户才能复制到文件或从文件复制”。问题是我不知道如何从stdin复制"from STDIN“,而stdin实际上并没有通过管道传递到PHP脚本。有没有办法使用ADODB将stdin输入作为sql命令的一部分提供,或者有没有等效的命令可以让我在不等待每次单独插入的情况下进行一次批插入?
发布于 2017-10-02 03:00:17
Postgresql扩展dblink()允许您将数据从一个服务器的数据库复制到另一个服务器的数据库。您需要知道服务器的ip地址和运行数据库的端口。以下是一些包含更多信息的链接:
http://www.leeladharan.com/postgresql-cross-database-queries-using-dblink
发布于 2017-09-30 10:06:35
我通过使用一个insert命令解决了这个问题,该命令将所有插入内容放在一条语句中,使用"union“-即
$sql="INSERT INTO tablename (name,payload)
select 'hello', 'world' union all
select 'this', 'is a test' union all
select 'and it', 'works'";
$q=$conn->Execute($sql);此解决方案的一个限制是字符串需要加引号,而整数等不能加引号。因此,我需要编写一些额外的代码来确保某些字段被加引号,而不是其他字段。
为了找出哪些列需要加引号,我使用了
$coltypes=$todb->GetAll("select column_name,data_type
from information_schema.columns
where table_name='".$totable."'");https://stackoverflow.com/questions/46496637
复制相似问题