Azure Cosmos DB for PostgreSQL 上的“复制”命令

复制”命令用于在文件和数据表之间移动数据。 “COPY”是基于服务器的命令,需要访问磁盘,通常仅限服务器管理员使用。 不过,Azure Cosmos DB for PostgreSQL 作为平台即服务 (PaaS) 解决方案运行,这意味着不会为用户授权超级用户权限。 因此,该平台并不完全支持“COPY”命令。

作为替代办法,psql 和其他客户端接口中提供 \COPY 命令来帮助用户与执行命令所在的计算机的本地文件系统直接进行交互。

Azure Blob 存储支持

pg_azure_storage 扩展将 Azure Blob 存储作为数据源来突破磁盘访问限制。 启用后,该扩展还通过 Azure Blob 存储支持增强了内置 COPY 命令。

使用 COPY 命令将数据加载到 github_users 表中:

COPY github_users
FROM 'https://pgquickstart.blob.core.chinacloudapi.cn/github/users.csv.gz';

目前,该扩展支持以下文件格式:

format description
csv PostgreSQL COPY 使用的逗号分隔值格式
tsv 制表符分隔值,默认 PostgreSQL COPY 格式
binary 二进制 PostgreSQL COPY 格式
text 包含单个文本值的文件(例如大型 JSON 或 XML)

注意

  • Postgres Native COPY 命令仍支持语法和选项,但以下例外:

    • FREEZE [ boolean ]
    • HEADER MATCH
  • 尚不支持 COPY TO 语法。

  • \COPY 是基于 psql 的命令,不支持 Azure Blob 存储集成。

  • \COPY 虽然允许在群集上执行导入/导出,但需要在整个网络中移动/复制文件。

后续步骤

详细了解如何使用 pg_azure_storage 扩展。