我需要将CSV文件中的数据加载到PostgreSQL中的表中 . 我不是超级用户使用复制命令 . 当我从postgreSQL网站上读到几个主题时,我开始知道使用 STDIN
和 STDOUT
的 \copy
命令 .
我尝试了相同但得到错误 . 我实际上尝试的是我在'D:/test/test.csv'中的CSV文件试图加载tablename:test使用下面的复制命令
命令: \copy test from stdin.
1)什么是STDIN以及我必须分配文件路径的位置
2)还有一个疑问是我只需要在psql中运行此命令,或者我可以在SQL工作台中运行它 .
谢谢 .
2 回答
1)stdin是标准输入 - 意味着您必须粘贴(或键入)数据
2)是
\copy
是psql
meta-command,不是SQL,因此只能在psql中执行...还 - 你不必运行
from stdin
,下面应该也可以运行:当您将大型结构化数据批量加载到数据库中时,命令COPY对您很有用 . 根据我的经验,我们在这里注意到一些事情 .
当你的命令在其他命令的管道之后使用时使用STDIN:
CAT xyz.csv | psql -U postgres -c "COPY test FROM STDIN"
这个命令,我知道只在命令行中运行 .您可以使用语法
COPY test FROM '/tmp/xyz.csv'
从文件加载数据 . 此命令可以在psql和pgAdmin中运行,但请注意文件的路径必须位于服务器上或服务器可以到达的位置,以及系统的权限user(运行数据库守护程序)可以访问和读取该文件 .您可以找到更多信息here .
希望这个答案能帮到你 .