使用 CentOS 7 上的 PostgreSQL 9.5,我创建了一个名为sample
还有几张桌子。我有.csv
数据输入/home/MyUser/data
对于每张桌子。
例如,存在TableName.csv
用于餐桌"TableName"
.
如何将 csv 文件加载到每个表中?
我所尝试的方法不起作用,我不知道我做错了什么。
从数据库内加载
$ psql sample
sample=# COPY "TableName" FROM '/home/MyUser/data/TableName.csv' WITH CSV;
ERROR: could not open file "/home/MyUser/data/TableName.csv" for reading: Permission denied
这意味着存在文件权限问题。所有文件在data/
are -rw-r--r--
目录本身是drwxr-xr-x
。所以文件权限不应该是问题(除非我遗漏了一些东西)。互联网上说COPY
权限有问题并尝试\copy
.
从 CLI 加载
$ psql \copy sample FROM /home/MyUser/data/TableName.csv WITH CSV
psql: warning: extra command-line argument "FROM" ignored
psql: warning: extra command-line argument "/home/MyUser/data/TableName.csv" ignored
psql: warning: extra command-line argument "WITH" ignored
psql: warning: extra command-line argument "CSV" ignored
psql: FATAL: Peer authentication failed for user "sample"
这似乎是一个语法错误,但我没有发现文档特别有帮助(man psql
then /\copy
)。我也尝试了以下方法,得到了相同的结果。
$ psql \copy sample."TableName" FROM /home/MyUser/data/TableName.csv WITH CSV
$ psql \copy sample FROM /home/MyUser/data/TableName.csv WITH DELIMITER ','
还有其他几种排列会产生类似的错误。
使用的网络资源
https://www.postgresql.org/docs/9.5/static/app-psql.html https://www.postgresql.org/docs/9.5/static/app-psql.html
https://www.postgresql.org/docs/9.5/static/sql-copy.html https://www.postgresql.org/docs/9.5/static/sql-copy.html
从具有单引号数据的 csv 文件加载 postgreSQL 数据的正确 COPY 命令? https://stackoverflow.com/questions/12856377/the-correct-copy-command-to-load-postgresql-data-from-csv-file-that-has-single-q
https://soleil4716.wordpress.com/2010/08/19/using-copy-command-in-postgresql/ https://soleil4716.wordpress.com/2010/08/19/using-copy-command-in-postgresql/
我可以在 postgresql 的函数中使用 \copy 命令吗? https://stackoverflow.com/questions/32188644/can-i-use-copy-command-into-a-function-of-postgresql
https://wiki.postgresql.org/wiki/COPY https://wiki.postgresql.org/wiki/COPY
关于权限:
不要忘记要访问您需要权限的文件all路径中的目录。例如,如果操作系统用户postgres
没有权限/home/MyUser
目录,您会收到观察到的错误消息。
About \copy
:
你必须使用-c
提供命令的选项psql
:
$ psql -c "\copy sample FROM '/home/MyUser/data/TableName.csv' WITH (FORMAT CSV)"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)