[英]Import data from Excel to PostgreSQL
我已經看到了關於stackoverflow的問題,與我現在所問的問題類似/相同,但是在我的情況下,我無法解決它。
事情是這樣的:我有一個excel電子表格(.xlsx),我將其轉換為逗號分隔值(.CSV),如在某些答案中所述:
我的excel文件看起來像這樣:
--------------------------------------------------
name | surname | voteNo | VoteA | VoteB | VoteC
--------------------------------------------------
john | smith | 1001 | 30 | 154 | 25
--------------------------------------------------
anothe| person | 1002 | 430 | 34 | 234
--------------------------------------------------
other | one | 1003 | 35 | 154 | 24
--------------------------------------------------
john | smith | 1004 | 123 | 234 | 53
--------------------------------------------------
john | smith | 1005 | 23 | 233 | 234
--------------------------------------------------
在PostgreSQL中,我創建了一個表,該表的名稱為allfields
並創建了6列第1列和第2列作為character [],最后4列作為整數,其名稱與excel表中顯示的名稱相同(name, surname, voteno, votea, voteb, votec)
現在我正在這樣做:
copy allfields from 'C:\Filepath\filename.csv';
但我收到此錯誤:
could not open file "C:\\Filepath\\filename.csv" for reading: Permission denied SQL state: 42501
allfields
表中創建這些列嗎? varchar
用作這兩列的類型。 1)我應該在PostgreSQL的allfields表中創建那些列嗎?
在字符字段中使用text
。 在任何情況下都不是數組,正如@yieldsfalsehood正確指出的那樣 。
2)我必須修改Excel文件中的其他內容嗎?
沒有。
3)為什么我會收到此“權限被拒絕”錯誤?
您的系統用戶postgres
(或與之運行postgres服務器的任何用戶)都需要訪問該文件。 每個文檔:
帶有文件名的
COPY
指示PostgreSQL服務器直接從文件讀取或寫入文件。 服務器必須可以訪問該文件,並且必須從服務器的角度指定名稱。
數據庫用戶的特權不是問題的原因。 但是(引用同一頁):
僅允許數據庫超級用戶使用
COPY
命名文件或命令,因為它允許讀取或寫入服務器有權訪問的任何文件。
關於權限問題,如果使用psql發出COPY
命令,請嘗試使用\\copy
。
好的,問題是我需要更改Excel file
的path
。 我將其插入所有用戶都可以訪問的公共帳戶中。
如果您遇到相同的問題,請將excel file
移到C:\\\\User\\Public
文件夾(此文件夾是沒有任何限制的公用文件夾),否則您必須處理Windows permission issues
。
對於那些由於某些原因不希望將文件移動到其他位置(公共)的用戶。 這是一個明確的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.