为了账号安全,请及时绑定邮箱和手机立即绑定

PHP postgresql pg_copy_from

PHP postgresql pg_copy_from

PHP
当年话下 2021-06-30 17:50:22
我有大约 20 万行要导入 Postgresql 数据库。我发现我应该使用pg_copy_from函数。我试过了,但它应该返回true或false返回null。当然,它不会在 db 中插入任何内容。pg_copy_from($this->connection, $table, $data);我也试过替代 pg_put_line    pg_query($this->connection, "copy $table from stdin");    foreach ($data as $row) {        pg_put_line($this->connection, implode('\t', $row));    }    pg_put_line($this->connection, "\\.\n");    pg_end_copy($this->connection);它没有帮助。它不会抛出任何错误,我不知道是什么问题。你知道它为什么返回null或如何解决这个问题吗?编辑:我的行看起来像这样2019-04-01\t8\t3\tH\tA\t0021\t\\N\t\\N\t\\N\t\\N\t15\t\\N\t0\t0\t0\t0我有 16 列......我可以使用 pdo 查询插入相同的数据
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

我建议您使用 PostgreSQL 工具而不是 PHP,因为在我看来,您的主要目标是“我有大约 20 万行要导入 Postgresql 数据库”。而不是 PHP pg_copy_from() 函数...

所以,我的建议是,pg_dump在终端上运行一个命令,然后在终端上使用该psql命令导入您的数据。例子:

$ pg_dump -U postgres -f mydump.sql -t mytable mydatabase

然后导入运行:

$psql -U postgres mydatabase < mydump.sql

最终,我们遇到了一个具有奇怪行为的 PHP 函数,我记得有一次我试图使用 pg_insert() 函数,我相信它带有通配符(?或 $ 我现在不确定)但它没有用,所以我放弃并使用 pg_query() 函数代替。也许你也有类似的问题。


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信