10 · 从旧版软件迁移
Factuzam 包含一款独立工具 Factuzam Migrator(FactuzamMigrator.exe),
用于将旧 ERP(SQL Server 数据库)的数据迁移到 factuzam
(MariaDB)数据库。本章介绍迁移内容、目标数据库准备方式,
以及如何执行和验证迁移。
这是通常只在上线时执行一次的管理员操作, 需要同时访问旧数据库和新数据库。
1. 工具说明与要求
- 它是独立于
fzam.exe的程序:只在迁移期间运行, 不属于日常工作流程。 - 同时连接:
- 来源:旧软件的 SQL Server 数据库。
- 目标:MariaDB 中的
factuzam数据库。
- 连接配置(不含密码)保存在
%USERPROFILE%\Factuzam\migrator.ini。

2. 迁移哪些数据
迁移器会遵循依赖顺序迁移以下业务域:
| 业务域 | 迁移内容 |
|---|---|
| 付款方式、增值税组、增值税 | 基础目录。 |
| 公司 | 开票公司。 |
| 仓库 | 仓库(及其收银台、系列和计数器)。 |
| 客户 | 完整客户资料。 |
| 供应商 | 完整供应商资料。 |
| 商品类别 | 商品分区和类别(保留层级)。 |
| 颜色和尺码 | 主属性目录。 |
| 商品 | 商品目录。 |
| 每件商品的颜色/尺码、尺码体系 | 商品变体分配。 |
| SKU | 可销售变体 + 条形码。 |
| 盘点 | 盘点及其明细。 |
| 移动记录 | 仓库移动(并重建当前库存)。 |
| 销售(收银) | 收银操作、付款和客户押金。 |
| 发票 | 发票及其明细。 |
| 采购 | 订单、送货单、供应商退货和采购发票。 |
| 付款组合 | 采购应付款和供应商付款批次。 |
| 员工 | 与登录用户分开的收银、调拨和盘点操作人员。 |
迁移会分批并行运行:互不依赖的业务域同时处理, 每一批等待上一批完成(目录 → 主数据 → 变体 → 单据)。
3. 准备目标数据库
Migrator 自带 «Preparar BBDD destino» 区域和三个按钮, 用于在不依赖外部文件的情况下创建新数据库:
- Extraer esqueleto de BBDD viva… — 连接参考
factuzam数据库, 生成包含全部结构(表、视图、存储过程)和系统表数据 (国家、增值税类型、窗口、元数据等)的.sql。 业务表(商品、客户、发票等)保持为空,由迁移填充。 - Crear BBDD destino — 使用
utf8mb4字符集和utf8mb4_spanish_ci排序规则,在 Destino 面板中创建指定数据库。 - Cargar esqueleto en destino… — 将第 1 步的
.sql导入新数据库。

另一种方式是像安装章节 那样,从
factuzam_original.sql创建目标数据库。 如果转储早于迁移器所需变更,请确保同时应用相关结构脚本 (客户代码扩展、供应商名称、类别层级、盘点明细、员工、采购、 采购发票和付款组合)。
4. 分步执行迁移
- 为来源和目标数据库都创建备份。
- 打开
FactuzamMigrator.exe。 - 配置 Origen(SQL Server)面板:主机、端口、数据库、用户和密码。 点击 Probar conexión。
- 同样配置 Destino(MariaDB)面板并测试连接。
- 勾选要执行的迁移。列表已遵循依赖顺序;完整迁移应全部勾选。 在采购部分,各业务域会在主数据和 SKU 后执行:订单、送货单、 供应商退货、采购发票、应付款和付款批次。
- 点击 Ejecutar migraciones。处理期间:
- 进度面板为每个活动业务域显示一行,实时显示计数器
X / Y (Z %)。 - 按钮会变为 Cancelar:点击后会完成当前业务域再停止 (已迁移内容会保留)。
- 进度面板为每个活动业务域显示一行,实时显示计数器
- 完成后检查摘要和错误面板。

安全重新执行(幂等性)
迁移是幂等的:如果记录已存在于目标中,会跳过 (计为“已跳过”)并继续。每个业务域在一个事务中运行:发生错误时, 该业务域整体回滚,其他业务域继续。因此,单项失败后可以修正原因并重新运行, 不会重复数据。
错误日志
每次执行会在三个位置留下记录:
- 界面的通用日志(全部详情)。
- 红色错误面板(仅错误和警告)。
migrator_errores_AAAAMMDD_HHMMSS.log文件,保存在%USERPROFILE%\Factuzam\中,供之后查看 (启动时会在日志中打印准确路径)。
5. 迁移后的手工调整
第一版迁移器采用了一些启发式规则,迁移完成后应手工检查:
| 数据 | 迁移器操作 | 后续检查 |
|---|---|---|
| 增值税类型 | 旧系统按日期保存历史;取最高百分比作为普通增值税,低税率/超低税率/免税设为 0。 | 在 Otros ▸ Impuesto IVA 中补全低税率、超低税率和免税百分比。 |
| 仓库代码 | 旧系统按(公司,仓库)索引;目标要求全局唯一代码。生成 E<empresa>-A<almacén>。 | 如需其他命名规则,请重命名代码。 |
| 商品增值税类型 | 旧系统保存整数;全部迁移为普通增值税(N)。 | 标记采用低税率/超低税率/免税的商品。 |
| 客户付款方式 | 使用旧系统应收项目代码作为付款方式代码。 | 检查迁移后的付款方式是否具有所需说明和行为。 |
| 商品类别 | 旧系统的分区和类别迁移到同一张表,并保留分区 → 类别层级。 | 检查生成的类别树。 |
| 每件商品的尺码集合 | 迁移目录和颜色/尺码分配,但不迁移每件商品的具体尺码集合。 | 为需要的商品分配属性集合(Archivo ▸ Tablas Auxiliares ▸ Colecciones de Atributos)。 |
| 历史采购 | 订单、送货单、退货和发票按每个 SKU 一行及其透视尺码重建。 | 在 Compras 中打开样本,检查供应商、仓库、状态、合计和税费。 |
| 采购应付款 | 导入旧版到期款项;已显示支付的项目会同时核销。 | 开始运营前检查待付、已付项目和付款批次。 |
6. 最终验证
确认迁移成功前:
- 核对总数:比较来源与目标中的客户、供应商、商品、SKU 和发票数量 (迁移摘要会显示每个业务域的已插入/已跳过/错误计数)。
- 库存:将一组商品的库存与旧系统比较(Almacén ▸ Informes)。 迁移器根据移动记录重建库存。
- 单据:打开一些迁移后的发票、收银操作和采购,检查金额和税费。
- 测试销售:在 POS 中创建一张测试小票,并在 Ventas Mayor 中创建一张测试发票。
- 付款组合:检查采购应付款和付款批次的到期日、状态和银行。
- 完成上一节中的手工调整。
- 为迁移后的数据库创建备份,作为正式起点。
验证完成前,请将旧软件和旧数据库保留为只读历史参考。