温馨提示×

linux informix如何导入表

小樊
48
2026-10-10 22:13:34
栏目: 智能运维

在 Linux 环境下使用 IBM Informix 导入表,常见方式有多种,取决于你已有的数据格式(如 .unl、CSV、SQL 等)。下面按最常用场景说明。


一、使用 dbaccess + LOAD 导入 .unl 文件(最常用)

1. 准备数据文件

Informix 默认 .unl 格式:

  • 字段分隔符:|
  • 行分隔符:换行
  • NULL 用 \N 表示

示例 t1.unl:

1|张三|25
2|李四|30
\N|王五|28

2. 使用 LOAD 导入

dbaccess 数据库名 -

LOAD FROM '/path/t1.unl'
INSERT INTO 表名;

或写成 SQL 文件:

LOAD FROM '/path/t1.unl'
INSERT INTO 表名;

然后执行:

dbaccess 数据库名 sqlfile.sql

二、使用 dbimport(整库导入)

适用于 dbexport 导出的整库

dbimport 数据库名 -i /备份目录

三、使用 onload(物理级恢复,少用)

onload -d 数据库名 -t 表名

⚠ 一般只在备份恢复场景使用。


四、导入 CSV / 自定义分隔符文件

方法 1:用 LOAD + DELIMITER

LOAD FROM '/path/data.csv'
DELIMITER ','
INSERT INTO 表名;

方法 2:外部表(External Table,推荐)

CREATE EXTERNAL TABLE ext_table
SAMEAS 目标表
USING (
  DATAFILES ("DISK:/path/data.csv"),
  DELIMITER ',',
  FORMAT 'DELIMITED'
);

INSERT INTO 目标表 SELECT * FROM ext_table;

五、使用 sqlhosts + dbaccess 脚本批量导入

export INFORMIXSERVER=实例名
export DBPATH=...
dbaccess dbname <<EOF
LOAD FROM '/data/t.unl' INSERT INTO t;
EOF

六、常见问题

1. 字符集问题

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

2. 权限问题

  • 确保 informix 用户可读数据文件
  • 表存在且字段顺序一致

3. 字段数不一致

  • 使用外部表更容易排查

七、推荐方案总结

场景 推荐方式
导入 .unl LOAD
导入 CSV 外部表
整库迁移 dbimport
大数据量 外部表

如果你能告诉我:

  • Informix 版本
  • 数据文件格式(CSV / UNL)
  • 是否跨库/跨机器

我可以给你精确命令模板。

0 踩