导入 CSV 文件

本页介绍了如何将 CSV 文件导入 AlloyDB 数据库。

执行导入的流程涉及以下任务:

  1. 将 CSV 文件上传到 Cloud Storage 存储分区。

  2. 准备客户端主机以执行导入操作。

  3. 将 CSV 文件导入数据库。

  4. 清理执行该过程时创建的资源

准备工作

  • 您必须在所使用的 Google Cloud 项目中拥有 Owner (roles/owner) 或 Editor (roles/editor) 基本 IAM 角色,或者必须拥有以下预定义 IAM 角色:
    • AlloyDB 管理员 (roles/alloydb.admin) 或 AlloyDB 查看者 (roles/alloydb.viewer)
    • Storage Admin (roles/storage.admin)
    • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)

上传 CSV 文件

如需上传 CSV 文件,您需要创建一个 Cloud Storage 存储分区,然后将该 CSV 文件上传到此存储分区。

  1. 在您的 AlloyDB 数据库所在的项目和区域中创建一个 Standard Storage Regional Storage 存储分区

  2. 将 CSV 文件上传到您创建的存储分区中。

准备客户端主机

如需准备客户端主机以执行导入操作,您需要创建一个可连接到数据库所在的 AlloyDB 主实例的 Compute Engine 虚拟机,并在该虚拟机上安装 psql 工具和 Google Cloud CLI。

  1. 按照将 psql 客户端连接到实例中的说明,创建具有适当连接性且安装了 psql 工具的 Compute Engine 虚拟机。按照以下说明操作时,请务必为 Compute Engine 虚拟机分配足够的本地存储空间,以容纳要导入的 CSV 文件。

  2. 安装 gcloud CLI,以便通过命令行访问 Cloud Storage 存储分区中的 CSV 文件。

导入 CSV 文件

如需导入 CSV 文件,您需要获取数据库所在的 AlloyDB 主实例的 IP 地址,然后使用 psql 工具创建一个包含 CSV 数据的表,然后将其导入。

  1. 通过查看其详细信息,获取您的数据库所在的 AlloyDB 主实例的 IP 地址。
  2. 通过 SSH 连接到 Compute Engine 虚拟机。

    控制台

    1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

      转到“虚拟机实例”

    2. 在虚拟机实例列表中,点击您创建的实例行中的 SSH

      实例名称旁边的 SSH 按钮。

    gcloud

    使用 gcloud compute ssh 命令连接到您创建的实例。

    gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

    替换以下内容:

    • PROJECT_ID:包含实例的项目的 ID。
    • ZONE:实例所在可用区的名称。
    • VM_NAME:实例的名称。
  3. 将 CSV 文件复制到客户端主机的本地文件系统:
    gcloud storage cp gs://BUCKET_NAME/CSV_FILE_NAME .
  4. 导入 CSV 文件:
    1. 运行 psql 客户端工具,然后在 psql 提示符下连接到数据库:
      psql -h IP_ADDRESS -U postgres
      \c DB_NAME
      

      系统会提示您输入 postgres 用户的密码。

      • IP_ADDRESS:主实例的 IP 地址。
      • DB_NAME:您要将 CSV 数据存储在其中的数据库的名称。
    2. 创建一个表格来包含 CSV 数据;例如:
      CREATE TABLE weather (
        city     varchar(80),
        temp_lo  int,
        temp_hi  int,
        prcp     real,
        date     date
      );

      上面的 CREATE TABLE 语句仅作说明之用;您需要创建一个表格,其列与 CSV 数据相匹配。

    3. 从 CSV 文件导入数据:
    \copy TABLE_NAME(COLUMN_LIST)
      FROM 'CSV_FILE_NAME'
      DELIMITER ','
      CSV HEADER
    ;
    • TABLE_NAME:您在上一步中创建的表的名称。
    • (COLUMN_LIST):要将数据导入到的表格列的名称(按数据在 CSV 文件中的显示顺序)的逗号分隔列表。
    • CSV_FILE_NAME:CSV 文件。
    • HEADER:表示 CSV 文件包含要忽略的标题行。如果没有,请省略此参数。

    psql 中的 \copy 命令采用与 PostgreSQL 的 COPY 命令相同的选项和参数来控制数据导入操作。

清理资源

成功导入 CSV 文件后,您可以删除 Cloud Storage 存储分区,并删除您在导入过程中使用的 Compute Engine 虚拟机