2017-03-04 45 views
0

我剛開始學習Postgresql,無法弄清楚如何導入csv或文本文件。我沒有sql背景,我不確定是否需要在數據庫中創建一個與我想導入的csv文件完全相同的列名稱的表。我無法打開我的csv文件,因爲它太大(10G),所以我不知道它的列名是什麼。在這種情況下,我怎樣才能將它導入Postgresql。另一件事是我不確定是否需要將csv文件放入特定文檔中。無法將csv或txt文件導入Postgresql

+0

要查看文件的前幾行,請使用'head' UNIX命令。您必須先創建表格,然後才能使用「COPY」命令導入數據。 –

+0

@LaurenzAlbe,你的意思是創建的表必須與csv文件具有完全相同的列名? – Bobo

+0

不一定。如果您不使用「COPY」命令指定列,則列將首先匹配,然後依此類推。您可以通過在「COPY」命令中指定它們來對列進行重新排序。除非您使用'HEADER'選項,否則這些列的*名稱*無關緊要,然後從文件中讀取它們。 –

回答

0

要將csv文件導入PostreSQL,您需要創建一個表,以匹配必要數據庫中csv文件值的列。

從Linux導入時,您需要爲PostgreSQL用戶提供對將要導入的csv文件的訪問權限。

sudo chown postgres:postgres /path/to/csvfile 

如果你還沒有足夠的權限,那麼你就可以充分對文件的訪問

sudo chmod 777 /path/to/csvfile 

然後,如果你喜歡,你可以從Linux命令行執行

/path/to/psql -d databasename -U postgres -c "copy tablename from '/path/to/csvfile' delimiter ',' csv" 

如果你想從psql命令行執行它,那麼你會使用

copy tablename from '/path/to/csvfile' delimiter ',' csv