PostgreSQL 教程: 将 CSV 文件导入表中

九月 15, 2023

摘要:在本教程中,我们将向您展示将 CSV 文件导入 PostgreSQL 表的各种方法。

首先,创建一个新表,名为persons,包含以下的列:

  • id: 人的 id
  • first_name: 名字
  • last_name: 姓氏
  • dob: 出生日期
  • email: 电子邮件地址
CREATE TABLE persons (
  id SERIAL,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  dob DATE,
  email VARCHAR(255),
  PRIMARY KEY (id)
)

posgresql import csv

其次,准备一个具有以下格式的 CSV 数据文件:

csv data

csv file

CSV 文件的路径为C:\sampledb\persons.csv,如下:

下载 persons.csv 文件

使用 COPY 语句将 CSV 文件导入表中

要将此 CSV 文件导入persons表中,请使用COPY语句,如下:

COPY persons(first_name, last_name, dob, email)
FROM 'C:\sampledb\persons.csv'
DELIMITER ','
CSV HEADER;

PostgreSQL 返回以下消息:

COPY 2

这意味着已经复制了两行。我们来查一下persons表。

SELECT * FROM persons;

img

它按预期工作。

让我们更详细地了解 COPY 语句。

首先,在COPY关键字后面指定带有一些列名称的表。列的顺序必须与 CSV 文件中的顺序相同。如果 CSV 文件包含表的所有列,则无需显式指定它们,例如:

COPY sample_table_name
FROM 'C:\sampledb\sample_data.csv' 
DELIMITER ',' 
CSV HEADER;

其次,将 CSV 文件路径放在FROM关键字后面。由于使用 CSV 文件格式,因此需要指定DELIMITER以及CSV子句。

第三,指定HEADER关键字以指示 CSV 文件包含标头。当COPY命令导入数据时,它会忽略文件头。

请注意,该文件必须由 PostgreSQL 服务器直接读取,而不是由客户端应用程序读取。因此,它必须可由 PostgreSQL 服务器计算机访问。此外,您需要具有超级用户访问权限才能成功执行COPY语句。

使用 pgAdmin 将 CSV 文件导入表中

如果您需要将 CSV 文件从计算机导入到 PostgreSQL 数据库服务器上的表中,可以使用 pgAdmin。

以下语句截断persons表,以便您可以重新导入数据。

TRUNCATE TABLE persons 
RESTART IDENTITY;

首先,右键单击persons表并选择**导入/导出…**菜单项:

img

其次,(1) 切换到导入,(2) 浏览到导入文件,(3) 选择格式为 CSV,(4) 选择分隔符为逗号 (,):

img

第三,单击列选项卡,取消选中 id 列,然后单击确定按钮:

img

最后,等待导入过程完成。下面显示了通知您导入进度的对话框:

img

在本教程中,您学习了如何使用COPY语句和 pgAdmin 工具,将数据从 CSV 文件导入到 PostgreSQL 数据库服务器上的表中。