4 min read

Supabase数据库表导入导出完全指南:SQL语句与管理后台操作详解

Supabase数据库表导入导出完全指南:SQL语句与管理后台操作详解

在开发过程中,我们经常需要对Supabase数据库中的表进行数据迁移、备份或恢复操作。虽然Supabase管理后台提供了便捷的图形界面,但掌握SQL语句的导入导出方法能让你在自动化脚本和特殊场景下游刃有余。本文将详细介绍在Supabase中通过SQL语句导入导出表的多种方法。

核心SQL命令

在Supabase中进行表数据导入导出的核心SQL命令非常简洁:

  • 导出(备份)COPY <table_name> TO ...
  • 导入(恢复)COPY <table_name> FROM ...

方法一:使用SQL语句(适用于命令行、脚本或任意PostgreSQL客户端)

这种方法通过直接连接Supabase的PostgreSQL数据库执行,需要使用psql命令行工具或其他SQL客户端。

1. 导出表数据到CSV文件

操作步骤:

  1. 获取连接信息:在Supabase项目后台,进入Settings → Database,找到Connection string中的参数:主机(Host)、端口(Port)、数据库名(Database)、用户名(User)和密码。

执行COPY命令:连接成功后,执行以下SQL命令将表数据导出到服务器文件。

COPY your_table_name TO '/tmp/your_table_export.csv' WITH (FORMAT CSV, HEADER);

使用psql连接:在终端中使用psql连接数据库。

psql "postgresql://<user>:<password>@<host>:<port>/<database>"

参数说明:

  • your_table_name:替换为你的表名
  • /tmp/your_table_export.csv:服务器上的目标文件路径
  • FORMAT CSV:指定导出为CSV格式
  • HEADER:包含表头(列名)

重要限制:Supabase的云数据库出于安全原因,对文件系统访问有严格限制。上述方法通常只能将文件导出到数据库服务器本身,无法直接从SQL查询中将文件下载到本地电脑。

2. 从CSV文件导入数据到表

操作步骤:

  1. 同样,先使用psql连接到数据库。
  2. 准备数据:确保CSV文件格式正确:
    • 列的顺序与数据库表中的顺序一致
    • 文件编码为UTF-8
    • 如果字段中包含逗号或换行符,该字段应该用双引号"括起来
  3. 上传文件到Supabase存储(关键步骤):
    • 在管理后台,进入Storage模块
    • 创建一个新的Bucket,例如命名为imports
    • 将CSV文件上传到这个Bucket中
  4. 获取文件URL:上传后,获取该文件的公共URL。

使用curl函数导入

COPY your_table_name
FROM PROGRAM 'curl "<YOUR_CSV_FILE_PUBLIC_URL>"'
WITH (FORMAT CSV, HEADER);

方法二:使用Supabase管理后台(推荐,最简单)

对于绝大多数用户,使用网页界面是最简单可靠的方式,它底层也是调用这些SQL命令,但帮你处理了所有复杂的步骤。

1. 导出表

  1. 进入Supabase项目后台的Table Editor
  2. 选择要导出的表
  3. 点击表右上角的...按钮
  4. 选择Export to CSV
  5. 浏览器会自动下载包含所有数据的CSV文件

2. 导入表

  1. 进入Table Editor
  2. 选择目标表(或创建新表)
  3. 点击表右上角的...按钮
  4. 选择Import data from CSV
  5. 上传CSV文件,系统会自动匹配列并进行导入

方法三:使用pg_dump和psql(用于完整备份或迁移)

如果需要导出整个表结构(而不仅仅是数据),或者进行整个数据库的备份和恢复,可以使用PostgreSQL的标准工具pg_dumppsql

1. 导出表结构和数据

pg_dump "postgresql://<user>:<password>@<host>:<port>/<database>" \
  -t your_table_name \
  -f your_table_backup.sql

参数说明:

  • -t:指定要导出的表名
  • -f:指定输出的SQL文件

2. 导入/恢复表

psql "postgresql://<user>:<password>@<host>:<port>/<database>" \
  -f your_table_backup.sql

总结与建议

需求 推荐方法 说明
快速导出单表数据 管理后台的"Export to CSV" 一键点击,最快最方便
快速导入单表数据 管理后台的"Import from CSV" 一键点击,有图形化列匹配
在自动化脚本中导出 使用pg_dump 可以导出结构和数据,适合备份
在自动化脚本中导入 使用psql -f 恢复pg_dump产生的备份文件
使用SQL处理特定数据 COPY ... TO/FROM PROGRAM 'curl ...' 灵活性最高,但步骤最复杂,需要先将文件上传到Storage

最佳实践建议

对于日常操作,强烈推荐直接使用Supabase管理后台的导入导出功能。只有当你有自动化、定制化需求时,再考虑使用原始的SQLCOPY命令或pg_dump/psql工具链。

选择合适的方法不仅能提高工作效率,还能避免不必要的错误。希望这篇指南能帮助你更好地管理Supabase数据库中的表数据!