簡體   English   中英

如何在 Manjaro/Arch Linux 上將 CSV 復制到 pgadmin4 中? (權限問題)

[英]How do I COPY a CSV into pgadmin4 on Manjaro/Arch Linux? (Permissions problems)

我正在運行 Manjaro Linux 並嘗試學習如何使用 PostgresSQL。 我已經根據 wiki安裝了 Postgres,並通過 pacman 安裝了 pgAdmin4。 我已經使用 pgAdmin4 GUI 設置了服務器和數據庫,並且已經開始進行基本的 SQL 查詢。

我正在嘗試導入一個 csv,它位於我磁盤上的/home/rob/Code/temp/birdsong.csv 在查詢工具面板中,我創建了鳥鳴表

-- Drop table if exists
DROP TABLE IF EXISTS bird_song;

-- Create new table
CREATE TABLE birdsong (
    english_name VARCHAR,
    country VARCHAR,
    latitude DEC,
    longitude DEC
 );

 COPY birdsong (english_name, country, latitude, longitude)
 FROM '/home/rob/Code/temp/birdsong.csv' DELIMITER ',' CSV HEADER;

我收到錯誤ERROR: could not open file "/home/rob/Code/temp/birdsong.csv" for reading: Permission denied

我使用的是 PostgresSQL 12.1 和 pgAdmin4 4.15。 順便說一句,當我啟動 pgAdmin4 時,它抱怨最新版本是 4.17,但我還沒有弄清楚是否/如何升級它。

如何安排正確的權限設置以將文件讀入 pgAdmin4?

您應該能夠通過運行以下命令從 pgadmin 服務啟用對文件的讀取訪問:

chmod o+rx /home/rob
chmod o+xr /home/rob/Code
chmod o+xr /home/rob/Code/temp
chmod o+r /home/rob/Code/temp/birdsong.csv

不過要小心,這可能並不完全可取。 另一種選擇是將文件復制到共享位置並添加讀取權限。

cp /home/rob/Code/temp/birdsong.csv /tmp
chmod o+r /tmp/birdsong.csv

...然后更改您的 SQL 以從新位置復制。

錯誤消息表明數據庫無權訪問文件/home/rob/Code/temp/birdsong.csv 您需要授予對數據庫用戶(通常稱為postgres訪問權限。 檢查如何在您的操作系統中執行此操作,例如在 Linux 中使用chown並再次嘗試使用 COPY。

 COPY birdsong (english_name, country, latitude, longitude)
 FROM '/home/rob/Code/temp/birdsong.csv' DELIMITER ',' CSV HEADER;

如果您沒有授予系統中用戶postgres訪問權限的必要權限,您可以通過psql使用COPYSTDIN工具:

$ cat birdsong.csv | psql your_db -c "COPY birdsong (english_name, country, latitude, longitude) DELIMITER ',' CSV HEADER FROM STDIN;"

如果您計划使用COPY將文件導入遠程數據庫,則此方法也很有用。

稍微不相關的筆記

我注意到您將longitudelatitude值以分隔列的形式導入表中,這對於導入數據來說很好。 但是,如果您打算使用這些數據執行空間操作,我建議您將這些坐標存儲在geometrygeography列中。 您可以這樣做:

SELECT AddGeometryColumn ('public','birdsong','geom',4326,'POINT',2);

或者

ALTER TABLE birdsong ADD COLUMN geom geometry(Point,4326);

.. 然后用一個點填充geom

UPDATE birdsong SET geom = ST_SetSRID(ST_MakePoint(longitude,latitude),4326);

數字 4326 代表 SRS WGS84 - 最常用的 SRS。

進一步閱讀:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM