在 PHP 中导出 + 导入 PSQL Table

Export + Import PSQL Table in PHP

我在 psql 中有一种语言 table 看起来像这样。

我的目标是导出我的语言 table 并使用 PHP 将其导入回来。

PHP

导出

shell_exec('psql -E -U postgres -d portal -c "COPY languages TO \'/Applications/MAMP/htdocs/code/site/portal/public/csv/languages.csv\' DELIMITER \',\' "');

languages.csv 导出成功。

如果我打开它,里面有这个。

1,h,Advanced Settings,Geavanceerde instellingen,Ajustes avanzados,Réglages avancés,2016-11-23 14:41:25,2016-11-23 14:41:25

导入

现在,我要开始导入了,这是我所做的

shell_exec('psql -E -U postgres -d portal -c "COPY languages (code, text, nl, es, fr, created_at, updated_at) FROM \'/Applications/MAMP/htdocs/code/site/portal/public/csv/languages.csv\' DELIMITER \',\' csv;"');

我不断得到

ERROR:  invalid input syntax for integer: "1,h,Advanced Settings,Geavanceerde instellingen,Ajustes avanzados,Réglages avancés,2016-11-23 14:41:25,2016-11-23 14:41:25"

上下文:复制语言,第 1 行,列 ID:“1,h,Advanced Settings,Geavanceerde instellingen,Ajustes avanzados,Réglages avances,2016-11-23 14:4...”

我该如何解决这个问题?我的导出命令有问题吗?

您的导入 COPY 命令比 CSV 文件少一列。它正在尝试将您的 updated_at 列作为第二行的 code 字段。

Table def:

(code, text, nl, es, fr, created_at, updated_at)

行:

"1,h,Advanced Settings,Geavanceerde instellingen,Ajustes avanzados,Réglages avancés,2016-11-23 14:41:25,2016-11-23 14:41:25"

地图:

code - 1
text - "h"
nl - "Advanced Settings"
es - "Geavanceerde instellingen"
fr - "Ajustes avanzados"
created_at - "Réglages avancés"
updated_at - 2016-11-23 14:41:25
code2 - 2016-11-23 14:41:25 // <-- Problem