You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PlanetScale下MySQL Shell导入导出CSV需访问服务器文件系统的问题

在PlanetScale中实现CSV导入导出(替代服务器文件系统访问方案)

PlanetScale作为无服务器MySQL平台,不允许直接访问数据库服务器的文件系统,所以你原本用的INTO OUTFILE/LOAD DATA INFILE这类依赖服务器文件的命令无法使用。下面是无需服务器文件权限的客户端侧解决方案:

一、CSV导出(将数据导出到本地CSV)

方法1:MySQL Shell专用导出工具(推荐)

通过MySQL Shell的内置工具直接导出到本地,支持精细格式控制:

# 先连接到你的PlanetScale实例(用官方提供的连接字符串即可)
mysqlsh --sql <你的PlanetScale连接字符串>

# 导出attachments表到本地CSV
util.dumpTable('你的数据库名.attachments', '/本地路径/results.csv', {
  format: 'csv',
  fieldsTerminatedBy: ',',
  fieldsEnclosedBy: '"',
  linesTerminatedBy: '\n'
})

方法2:mysql客户端命令行重定向

用基础mysql客户端将查询结果直接输出到本地文件:

# 基础导出(制表符分隔)
mysql -h <PlanetScale主机地址> -u <用户名> -p<密码> <数据库名> -e "SELECT id, filename FROM attachments;" > /本地路径/results.csv

# 带格式转换(转成逗号分隔+引号包裹)
mysql -h <PlanetScale主机地址> -u <用户名> -p<密码> <数据库名> -B -e "SELECT id, filename FROM attachments;" | sed 's/\t/,/g' | sed 's/^/"/g' | sed 's/$/"/g' > /本地路径/results.csv

-B参数启用批量输出模式,后续sed命令负责格式转换。

二、CSV导入(从本地CSV导入到PlanetScale)

方法1:MySQL Shell专用导入工具(推荐)

用MySQL Shell的导入工具读取本地文件,直接写入数据库:

# 连接到PlanetScale实例
mysqlsh --sql <你的PlanetScale连接字符串>

# 导入本地CSV到attachments表
util.importTable('/本地路径/import.csv', {
  schema: '你的数据库名',
  table: 'attachments',
  format: 'csv',
  fieldsTerminatedBy: ',',
  fieldsEnclosedBy: '"',
  linesTerminatedBy: '\n',
  skipRows: 1 # 如果CSV有表头行,设置为1跳过
})

方法2:mysqlimport命令行工具

用官方的mysqlimport工具,通过--local参数指定读取本地文件:

mysqlimport -h <PlanetScale主机地址> -u <用户名> -p<密码> --local --fields-terminated-by=, --fields-enclosed-by=" --lines-terminated-by="\n" <数据库名> /本地路径/import.csv

--local是核心参数,确保从你的本地文件系统读取,而非服务器端。

注意事项

  • 确保你的IP已被PlanetScale实例的访问白名单允许,或者使用带SSL的连接字符串。
  • 导入前确认目标表结构与CSV字段完全匹配,避免数据类型或字段数量不兼容。
  • 大文件导入优先用MySQL Shell的工具,它支持断点续传和更稳定的并发处理。

内容的提问来源于stack exchange,提问作者antonwilhelm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:10:33