2017-03-04 80 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