在 Ubuntu 上迁移 IBM Informix 数据库数据,常见做法有几种,具体取决于你是要同版本迁移、跨版本迁移、还是跨平台迁移。下面按实用场景给你一个清晰方案。
onstat -V
onmode -V
确认源库和目标库的:
ontape -s -L 0
# 或
onbar -b -L 0
适合:整库迁移、跨平台(Linux ↔ Linux)
dbexport dbname -o /tmp/export_dir
导出内容:
scp -r /tmp/export_dir user@target:/tmp/
dbimport dbname -i /tmp/export_dir
⚠️ 注意:
适合:部分表、大表、灵活控制
dbaccess dbname <<EOF
unload to '/tmp/tab.unl'
select * from tabname;
EOF
dbaccess dbname <<EOF
load from '/tmp/tab.unl'
insert into tabname;
EOF
优点:
缺点:
适合:同版本 Informix 快速迁移
onunload dbname
onload dbname
⚠️ 限制:
Informix JDBCPentahoDataStageInformix 一般跑在 informix 用户下:
id informix
export INFORMIXDIR=/opt/ibm/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
export DB_LOCALE=en_US.utf8
导出的 .unl 文件必须能被 informix 用户读取。
❌ 字符集不一致 → 导入乱码
❌ 表空间不存在 → 导入失败
❌ 用户不存在 → 权限丢失
❌ Ubuntu SELinux/AppArmor 限制文件访问
| 场景 | 推荐方式 |
|---|---|
| 整库迁移 | dbexport / dbimport |
| 单表迁移 | unload / load |
| 同版本快速迁移 | onunload / onload |
| 异构数据库 | JDBC / ETL |
如果你愿意,可以告诉我:
我可以直接给你可执行的迁移命令脚本。