温馨提示×

centos如何导入informix数据

小樊
37
2026-10-14 19:02:22
栏目: 智能运维

在 CentOS 上“导入 Informix 数据”通常有两种理解:

  1. 把数据导入到 Informix 数据库(CentOS 上已安装 Informix)
  2. 从 Informix 导出数据或其他环境导入到 CentOS 上的 Informix

下面我按 最常见场景:在 CentOS 上把数据导入 Informix 数据库 来说明。


一、前提条件

确保你已经:

  • CentOS 上已安装 IBM Informix
  • 已创建数据库和表
  • 环境变量已配置(INFORMIXDIR、INFORMIXSERVER、PATH 等)
source /home/informix/.bash_profile

二、常见导入方式

✅ 方式 1:使用 dbload(推荐,大批量)

1. 准备数据文件(定长或分隔符)

例如 data.unl:

1|张三|25
2|李四|30

2. 编写控制文件 load.ctl

FILE data.unl DELIMITER '|'
INSERT INTO student
(
  id,
  name,
  age
);

3. 执行导入

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

✅ 方式 2:使用 LOAD(简单小数据)

LOAD FROM 'data.unl'
INSERT INTO student;

或带分隔符:

LOAD FROM 'data.unl'
DELIMITER '|'
INSERT INTO student;

在 dbaccess 中执行:

dbaccess testdb

✅ 方式 3:使用 onload(整库/整表二进制)

适用于 同版本 Informix 迁移

onload -d testdb -t student

⚠️ 要求表结构完全一致


✅ 方式 4:从其他数据库导入(如 MySQL / Oracle)

一般流程:

  1. 源库导出为 CSV / TXT
  2. 转换成 Informix 支持的格式
  3. 使用 dbload 或 LOAD

示例:

mysql -e "SELECT * FROM user" db > user.txt
# 清洗格式后
dbload ...

三、常见错误排查

1. 权限问题

chown informix:informix data.unl
chmod 644 data.unl

2. 字符集问题

检查:

echo $DB_LOCALE
echo $CLIENT_LOCALE

3. 字段不匹配

  • 列数不一致
  • NULL 值未正确处理

四、示例完整流程

# 1. 登录
dbaccess testdb

# 2. 建表
CREATE TABLE student (
  id INTEGER,
  name CHAR(20),
  age INTEGER
);

# 3. 准备数据
vi student.unl
1|Tom|20
2|Jack|22

# 4. 导入
LOAD FROM 'student.unl' DELIMITER '|'
INSERT INTO student;

如果你能告诉我:

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

我可以给你 更精确的导入方案。

0 踩