温馨提示×

centos Informix如何导入数据

小樊
37
2026-09-18 03:49:20
栏目: 智能运维

CentOS 上使用 IBM Informix 导入数据,常见方式有以下几种,按使用频率从高到低说明。


一、使用 dbimport(整体数据库导入,最常用)

适用场景

  • dbexport 导出的数据库
  • 整库恢复/迁移

步骤

  1. 准备导出目录
dbexport olddb

会生成 olddb.exp 目录

  1. 导入数据库
dbimport newdb -i /path/to/olddb.exp

常用参数:

dbimport newdb -i /opt/ifmx/olddb.exp -d datadbs
  • -d:指定数据库空间

二、使用 load(表级导入,文本文件)

适用场景

  • 从文本文件导入单表
  • 数据来自 CSV / 定长文本

示例

LOAD FROM '/data/t1.unl'
INSERT INTO t1;

或指定分隔符:

LOAD FROM '/data/t1.unl'
DELIMITER '|'
INSERT INTO t1;

文件格式(UNL)

1|张三|2024-01-01
2|李四|2024-02-01

注意:字段顺序必须与表结构一致


三、使用 dbload(大批量、可控导入)

特点

  • 支持错误容忍
  • 适合百万级以上数据

示例

dbload -d testdb -c load.ctl

load.ctl 示例

FILE /data/t1.unl DELIMITER '|' 3;
INSERT INTO t1;

参数说明:

  • -d:数据库名
  • -c:控制文件
  • -e:最大错误数
  • -n:每次提交行数

四、使用 onload(整库/表空间级)

适用场景

  • 同构环境迁移
  • 备份恢复
onload -t t1.tape testdb t1

⚠️ 一般少用,需相同 Informix 版本


五、外部表(External Table,推荐)

示例

CREATE EXTERNAL TABLE ext_t1
LIKE t1
USING (
  DATAFILES ("DISK:/data/t1.unl"),
  DELIMITER '|'
);

INSERT INTO t1 SELECT * FROM ext_t1;

✅ 灵活、性能好、可控


六、常见问题(CentOS)

  • 权限问题:确保 informix 用户可读文件
  • 字符集:检查 DB_LOCALE
  • 换行符:Windows 文件需转 Unix 格式
dos2unix data.unl

七、推荐方案总结

场景 推荐方式
整库迁移 dbimport
单表文本 load
大批量 dbload
灵活导入 外部表

如果你能说明:

  • Informix 版本
  • 数据来源(CSV / Oracle / MySQL)
  • 是否整库还是单表

我可以给你 精确命令示例

0