温馨提示×

Linux Informix如何导入数据

小樊
44
2026-07-31 13:40:52
栏目: 智能运维

Linux 上的 Informix 数据库中,导入数据常用以下几种方式,最常用的是 dbloadLOAD 语句。下面按常见场景给你一个完整说明。


一、准备数据文件(最常见:CSV / 定长文本)

示例数据文件:data.txt

1001|张三|25
1002|李四|30
1003|王五|28

默认分隔符可以是 |,\t


二、使用 LOAD 语句(最常用 ✅)

1️⃣ 登录数据库

dbaccess dbname -

dbaccess dbname

2️⃣ 执行 LOAD

LOAD FROM '/home/informix/data.txt'
DELIMITER '|'
INSERT INTO employee (id, name, age);

✅ 特点:

  • 简单、速度快
  • 适合 百万级以下数据
  • 不会自动 commit(需手动)

3️⃣ 提交事务(重要)

COMMIT WORK;

三、使用 dbload(适合大批量数据 ✅✅)

1️⃣ 准备控制文件 load.ctl

FILE data.txt DELIMITER '|'
INSERT INTO employee (id, name, age);

2️⃣ 执行 dbload

dbload -d dbname -c load.ctl -l error.log

常用参数:

dbload -d dbname -c load.ctl -n 10000 -l err.log

参数说明:

  • -d 数据库名
  • -c 控制文件
  • -n 每次提交行数
  • -l 错误日志

✅ 优点:

  • 支持大批量
  • 可断点续传
  • 生产环境首选

四、使用 dbimport(整库导入)

⚠️ 不是导入普通数据,而是导入整个数据库

dbimport dbname -i /backup/path

适用于:

  • 数据库迁移
  • 整库恢复

五、使用 External Table(高级用法)

CREATE EXTERNAL TABLE ext_emp
(
 id INT,
 name CHAR(20),
 age INT
)
USING (
 DATAFILES ("DISK:/home/informix/data.txt"),
 DELIMITER '|'
);

INSERT INTO employee
SELECT * FROM ext_emp;

✅ 适合:

  • 并行加载
  • 复杂 ETL

六、常见问题排查

1️⃣ 编码问题

Informix 默认 ISO-8859-1
中文建议:

export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8

2️⃣ 权限问题

chmod 644 data.txt

确保 informix 用户可读


3️⃣ 数据格式错误

  • 字段数不一致
  • NULL 值未处理
  • 日期格式错误

七、推荐选择总结

场景 推荐方式
小数据量 LOAD
大数据量 dbload
整库迁移 dbimport
ETL / 并行 External Table

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

  • Informix 版本
  • 数据量大小
  • 表结构(CREATE TABLE)

我可以直接帮你写 可执行的导入脚本

0