【问题标题】:COPY FROM CSV to Postgres in Ubuntu在 Ubuntu 中从 CSV 复制到 Postgres
【发布时间】:2013-05-30 21:31:45
【问题描述】:

我的问题与one 类似,但在 Linux Mint 15 (Ubuntu) 中。我已经尝试过标准的COPY(我一直在 Windows 上使用):

COPY public.bio FROM 'tmp/sisinst_bio.csv' DELIMITERS '|' CSV;

我收到此错误:

ERROR: could not open file "/tmp/sisinst_bio.csv" for reading: Permission denied

数据库的所有者和用户是postgres

尝试

(1) 创建一个与我的 Ubuntu 用户帐户 (zach) 相同的用户并更改数据库的所有者。

(2) 将 csv 移动到 Ubuntu 的各个部分

sudo cp -r /home/zach/Documents/Postgres91/sisinst_postgresql_bio_test.csv /usr/share/postgresql/9.1

sudo cp -r /home/zach/Documents/Postgres91/sisinst_postgresql_bio_test.csv /tmp

这真的很容易,但我被卡住了。我不确定这是Postgresql 还是Ubuntu 问题。

更新

这和this 有关系吗?

一如既往,谢谢大家

【问题讨论】:

    标签: ubuntu csv import postgresql-9.1


    【解决方案1】:

    对于CSVRight Click -> Properties -> Permissions)中的PermissionsOthers 设置为None

    为了解决这个问题,以便Postgres 用户可以使用它,我将Others 更改为Read-only,这很有效。

    最终,Postgres 用户在 Group 中可能会更好,但目前这在我之上。

    我愿意接受更好的答案。

    【讨论】:

      【解决方案2】:

      使用ls -l /tmp/sisinst_bio.csv 查看文件的权限是什么。您可能会看到类似 -rw------- 的内容,这意味着所有者可以读取和写入,但其他人无法读取。

      如果是这种情况,请尝试使用以下方法使 CSV 文件组和世界可读:

      chmod g+r,o+r /tmp/sisinst_bio.csv
      

      【讨论】:

      • 你在-rw------- 上是对的,但chmod g+r,o+r /tmp/sisinst_bio.csv 给了我这个错误:
        chmod: changing permissions of ‘/tmp/sisinst_bio.csv’: Operation not permitted
      • 首先,除非执行初始设置管理员,否则不要以 postgres 身份连接到 Postgres。其次,将文件 chown 给您连接的任何用户。如果您不能 chown 或 chmod 文件,您可能必须 sudo chown,或将其复制到您可以控制的新位置(如果 Mint 15 具有 /tmp 的特殊陷阱机制 - 可能就是这种情况)。
      • 好的,我已经使用chown 更改了文件的所有权。我还在 Postgres 中使用了一个新用户 (zach)。我运行ls -l /home/zach/Documents/Postgres91/sisinst_bio.csv。该文件以这种方式拥有:-rw-rw---- 1 zach zach 90722 may 30 12:39,我仍然在Postgres 中收到相同的错误。这是否意味着它归用户zach和组zach所有?
      • 是的 - 这意味着它归用户 zach 和组 zach 所有。 -rw-rw---- 表示拥有用户和拥有组中的任何用户都可以读写。 chmod 现在应该可以工作了。 chmod o+r /home/zach/Documents/Postgres91/sisinst_bio.csv 将使其可供任何用户阅读。
      • 我应该澄清一下:Postgres 用户和 UNIX 用户不是一回事。当您执行COPY 时,副本以服务器运行的任何 Unix 用户身份在服务器上运行。这就是为什么即使您有一个名为“zach”的 Unix 用户和一个名为“zach”的 Postgres 用户,您仍然无法访问该文件。使任何用户都可以读取文件将确保 Pg 服务器可以读取它。另一种方法是使文件归 Pg 服务器用户所有。
      猜你喜欢
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多