温馨提示×

Linux Informix怎么导出数据

小樊
45
2026-07-31 13:41:43
栏目: 智能运维

Linux 下的 Informix 数据库中,导出数据常用以下几种方式,按使用频率从高到低说明,并给出示例。


一、使用 dbexport(整库或整库模式导出,最常用)

适用场景

  • 导出 整个数据库
  • 用于备份或迁移
  • 会生成 schema + 数据文件(ASCII)

基本用法

dbexport database_name -o /opt/informix/export

示例

dbexport testdb -o /home/informix/export

说明

  • -o:指定输出目录
  • 导出的内容:
    • testdb.sql(表结构)
    • testdb.unl(数据文件)
  • 数据库必须处于 无连接或独占模式

可选参数

dbexport testdb -o /opt/export -ss   # 保留片段信息

二、使用 UNLOAD(导出单表数据,最灵活)

适用场景

  • 导出 单表或部分数据
  • 经常用于数据迁移

示例 1:导出整张表

UNLOAD TO '/opt/informix/export/t1.unl'
SELECT * FROM t1;

示例 2:指定分隔符

UNLOAD TO '/opt/informix/export/t1.unl'
DELIMITER '|'
SELECT * FROM t1;

执行的几种方式

1️⃣ DB-Access

dbaccess testdb -

然后输入 SQL。

2️⃣ 直接执行

echo "UNLOAD TO '/opt/informix/export/t1.unl' SELECT * FROM t1;" | dbaccess testdb -

三、使用 dbaccess + SQL(导出查询结果)

示例

dbaccess testdb <<EOF
UNLOAD TO '/opt/informix/export/result.unl'
SELECT col1, col2 FROM t1 WHERE col3 = 'A';
EOF

四、使用 onunload(二进制格式,不推荐用于跨平台)

特点

  • 二进制格式
  • 速度快
  • 不可跨平台恢复
  • 多用于同平台备份
onunload -t /dev/rmt0 testdb

✅ 一般不用于数据交换


五、导出为 CSV(较新版本 Informix)

示例

UNLOAD TO '/opt/informix/export/t1.csv'
DELIMITER ','
SELECT * FROM t1;

六、常见问题与建议

1️⃣ 权限问题

确保:

  • Informix 用户对导出目录有写权限
  • 目录提前创建
mkdir -p /opt/informix/export
chown informix:informix /opt/informix/export

2️⃣ 中文或乱码问题

  • Informix 默认使用数据库字符集
  • 确认 DB_LOCALECLIENT_LOCALE

3️⃣ 大数据量导出

  • 使用 UNLOAD
  • 避免在 dbexport 中导出超大表

七、推荐方案总结

需求 推荐方式
整库导出 dbexport
单表导出 UNLOAD
条件导出 UNLOAD + SELECT
快速备份 onunload

如果你愿意,可以告诉我:

  • Informix 版本
  • 是整库还是单表
  • 是否需要 CSV / 导入到其他数据库(如 Oracle / MySQL)

我可以给你 最合适的导出命令组合

0