Heroku Postgres - 通过命令行界面从CSV导入

10

我正在努力寻找解决方案,将一个CSV文件(在我的本地机器上)导入到我的Heroku pg数据库中。尝试使用COPY从公共可访问的URL直接读取文件,但我需要pg的超级用户权限才能这样做。尝试使用cat将文件的输出通过stdin传输,但不确定格式是否正确(似乎总是完成但没有导入数据 - 完成时会显示“COPY 0”)。

cat ~/Downloads/localfile.csv | heroku pg:psql -c "COPY testonly FROM STDIN WITH (FORMAT CSV);"

由于接下来的几个月我需要多次进行此操作,所以我不想先将其导入本地再导出备份。如果可以让COPY选项正常工作就太好了。

1个回答

15

您很接近了,除了您需要将CSV文件提供给本地的psql

heroku pg:psql不接受标准输入(stdin)。

像这样

cat ~/Downloads/localfile.csv | \
psql `heroku config:get DATABASE_URL` -c "COPY testonly FROM STDIN WITH (FORMAT CSV);"

太棒了!像冠军一样工作。 - dgwebb
感谢@Stan。在我的情况下,我还必须在DATABASE_URL后面添加--app <app_name> :) - Technext
当然。或者你可以export HEROKU_APP_NAME=...这样你就不必一直指定它了。而且你可以使用https://direnv.net/来自动管理每个目录的环境变量。 - Stan Mazhara
我遇到了一个错误 psql: error: could not connect to server: FATAL: role "matthew" does not exist。 - stidmatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接