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

pg_copy_from() 输入的数组格式是什么?

pg_copy_from() 输入的数组格式是什么?

PHP
沧海一幻觉 2023-10-15 17:13:32
我正在尝试使用 PHP 将许多历史数据的 CSV 文件加载到 PGSQL 服务器。我注意到 PHP 提供了pg_copy_from()将本地数据加载到远程服务器的功能,但输入的确切格式很模糊。该文档表示它需要一个行数组,每行都是该行中值的分隔字符串。PHP 的file()函数以所描述的格式返回一个数组,但将其输入 pg_copy_from() 会返回错误:$rows = file('path/to/data.csv', FILE_IGNORE_NEW_LINES); // Same result without ignore_new_linespg_copy_from($db, 'dest_table', $rows, ',');'PHP Warning:  pg_copy_from(): Copy command failed: ERROR:  invalid input syntax for integer: ""col_2""'我检查了数组,$rows它的格式如下:[index]=>""foo",3,7,"bar",500,"z""其中所有字符串值和字符串本身都用双引号引起来。我假设它试图将整个字符串加载到我的表的第一列中,因此出现 col_2 无法加载的错误(因为没有任何内容可加载)。我对数组的假设是否错误,或者分隔字符串是否需要不同的格式(如果需要,如何)?感谢您的任何帮助/提示!
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

只需删除数组的第一个元素$rows,因为它包含标题。array_shift可以使用删除数组的第一个元素而不反转数组:


$rows = file('path/to/data.csv', FILE_IGNORE_NEW_LINES);

array_shift($rows);

pg_copy_from($db, 'dest_table', $rows, ',');


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 62 浏览

添加回答

举报

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