我正在嘗試使用 PHP 將許多歷史數(shù)據(jù)的 CSV 文件加載到 PGSQL 服務(wù)器。我注意到 PHP 提供了pg_copy_from()將本地?cái)?shù)據(jù)加載到遠(yuǎn)程服務(wù)器的功能,但輸入的確切格式很模糊。該文檔表示它需要一個(gè)行數(shù)組,每行都是該行中值的分隔字符串。PHP 的file()函數(shù)以所描述的格式返回一個(gè)數(shù)組,但將其輸入 pg_copy_from() 會(huì)返回錯(cuò)誤:$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""'我檢查了數(shù)組,$rows它的格式如下:[index]=>""foo",3,7,"bar",500,"z""其中所有字符串值和字符串本身都用雙引號引起來。我假設(shè)它試圖將整個(gè)字符串加載到我的表的第一列中,因此出現(xiàn) col_2 無法加載的錯(cuò)誤(因?yàn)闆]有任何內(nèi)容可加載)。我對數(shù)組的假設(shè)是否錯(cuò)誤,或者分隔字符串是否需要不同的格式(如果需要,如何)?感謝您的任何幫助/提示!
1 回答

隔江千里
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
只需刪除數(shù)組的第一個(gè)元素$rows,因?yàn)樗瑯?biāo)題。array_shift可以使用刪除數(shù)組的第一個(gè)元素而不反轉(zhuǎn)數(shù)組:
$rows = file('path/to/data.csv', FILE_IGNORE_NEW_LINES);
array_shift($rows);
pg_copy_from($db, 'dest_table', $rows, ',');
- 1 回答
- 0 關(guān)注
- 117 瀏覽
添加回答
舉報(bào)
0/150
提交
取消