我正在寻找运行 postgresql docker 容器来保存一些数据。我之前在 clickhouse 中使用过 docker,但没有在 postgresql 中使用过,而且我在这里遇到了一个基本问题,即使用 COPY 加载数据。详细信息如下:
\n\n操作系统:在 NUC 上运行的 UBUNTU 16.04
\n\n从这里使用 docker postgres 服务器容器:
\n\nhttps://docs.docker.com/engine/examples/postgresql_service/
\n\ndocker ps 显示服务器运行没有问题:
\n\n29fb9b39e293 eg_postgresql "/usr/lib/postgresql\xe2\x80\xa6" 43 hours ago Up 3 hours 0.0.0.0:5432->5432/tcp pg_test\nRun Code Online (Sandbox Code Playgroud)\n\n我想复制当前位于以下文件夹中同一 NUC 中的文件:
\n\nDesktop/ems/ems_raw.csv\nRun Code Online (Sandbox Code Playgroud)\n\n我已向 postgres 用户授予用户权限,以防万一:
\n\n-rw-rw-r-- 1 postgres me 4049497429 Mar 22 12:17 Desktop/ems/ems_raw.csv\nme@docker1:~$ \nRun Code Online (Sandbox Code Playgroud)\n\n我尝试在 psql 中运行以下命令。方法一:
\n\nme@docker1:~$ docker exec -ti pg_test psql -U postgres\npsql (9.3.17)\nType "help" for help.\n\npostgres=# COPY ems_stage FROM "Desktop/ems/ems_raw.csv" WITH (format csv,header);\nERROR: syntax error at or near ""Desktop/ems/ems_raw.csv""\nLINE 1: COPY ems_stage FROM "Desktop/ems/ems_raw.csv" WITH (format c...\n ^\npostgres=# \nRun Code Online (Sandbox Code Playgroud)\n\n我也尝试过直接通过终端运行它,以防万一,方法 2:
\n\nme@docker1:~$ docker exec -ti pg_test psql -U postgres -c "COPY ems_stage FROM "Desktop/ems/ems_raw.csv" WITH (format csv,header);"\nERROR: syntax error at or near "Desktop"\nLINE 1: COPY ems_stage FROM Desktop/ems/ems_raw.csv WITH (format csv...\n ^\nme@docker1:~$ \nRun Code Online (Sandbox Code Playgroud)\n\n我知道这里有一些基本的东西我可能无法理解。我该如何正确运行这个?我假设我在路径上犯了错误?感谢各位的帮助。
\n因此,在结合了建议之后,这对我有用:
psql -h localhost -p 5432 -d docker -U docker --password --c "\COPY ems_stage FROM 'Desktop/ems/ems_raw.csv' WITH (format csv,header);"
Run Code Online (Sandbox Code Playgroud)
从docker文档中的dockerfile引用docker数据库和docker用户名。
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |