SuperAPI AI 工具集

surrealdb-migrate

通用与其它

查看项目

更新于 10-16 01:34

技能介绍

该技能用于把 SurrealDB 从 v2.x(含 v2.3.7)迁移到 v3.x(含 v3.0.5),同时覆盖 JS SDK v1.x 到 v2.x 的升级。

用途:官方 surreal export + surreal import 往返在多数真实数据库上不可用,主要问题包括:v2 导出未正确转义字符串中的反斜杠、复合数组记录 ID(如 block:[document:xxx, '/path'])不被文本导入支持、多行 INSERT 无法被重新组装、超过约 10MB 的 INSERT 批次导致解析崩溃、RELATE 与复合 ID 失败、SDK v2 的 RecordId.toString() 序列化与 type::record() 不兼容、事务返回结构变化。该技能改用基于 JS SDK 的 CBOR-over-WebSocket 自定义脚本绕过文本解析器。

主要能力:分阶段迁移手册,包括预迁移评估(surreal version、GET /export 导出、--dry-run 评估备份)、Schema 迁移(函数重命名如 duration::from::X() 改为 duration::from_X()、rand::guid() 改为 rand::id()、type::thing 改为 type::record,SEARCH ANALYZER 改为 FULLTEXT ANALYZER,MTREE 改为 HNSW,<future> 改为 COMPUTED 等)、SDK v1 到 v2 迁移(auth 改为 authentication、recordId.tb 改为 .table、query 需 .collect()、事务逐语句返回结果)、数据迁移脚本、迁移后验证。

用法示例:bun run scripts/surrealdb-migrate.ts backup-v2.surql --url http://localhost:8000 --user root --pass root --ns prod --db prod --v3;支持 --data-only、--batch 100。另有 scripts/surrealdb-restore-sdk.ts 用于修复反斜杠转义问题,scripts/rid-to-surql.ts 提供 ridToSurql() 转换。

适用场景与限制:适合需要迁移 SurrealDB 数据库、修复 v2 查询、跨版本恢复备份的开发者。迁移脚本的完整能力以实际仓库文件为准,正文未提供的功能、价格与平台信息暂未提供。常见坑包括 v3 拒绝向 option<T> 传 null、新建日期字符串不被接受、populated 表上 DEFAULT 对既有记录不生效、DDL 不支持参数、.collect() 返回 RecordId 对象而非字符串等。