我有大约 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() 函数代替。也许你也有类似的问题。
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报
0/150
提交
取消