SinoDB数据库导入导出工具unload/load

  unload/load是最常使用的最简单的数据导入、导出工具,支持的数据格式为以固定分隔符(如“|”为默认的分隔符)分隔的文本文件。

1. unload 数据导出

使用方法如下:

unload to 'filename’ [DELIMITER ‘delimiter’] SELECT Statement;

其中:

  • filename可以为全路径或者相对路径文件名:
  • DELIMITER选项,定义数据列分隔符,默认为“|”;
  • SELECT 项为 SQL 子句,可以是任何形式的SOL语句。这也是unload工具的优势,我们可以利用unload 导出任意 SOL语句执行的返回结果到文本文件中。

以下是unload导出数据示例:

  • 导出单表数据,列分隔符使用【,】。

unload to ‘…/data/dept.unl’ delimiter ‘,’ select * from dept;

  • 导出多表关联数据,列分隔符默认使用【|】。

unload to ‘…/data/unload_01.unl’
select a.f_employeeid, a.f_employeename, a.f_deptid, b.f_deptname, a.f_birthdate
from t_employee a, t_dept b
where a.f_deptid = b.f_deptid;

  可以通过提高SQL语句的执行性能来提高 unload 导出数据的性能。如果导出数据较大,则在可以利用PDQ的情况下,设置PDQ的优先级,多线程并发执行SELECT,以加快SQL 的执行速度。

2. load数据导入

  Load 是一种快速而简单的数据导入工具,但只支持特定数据格式的文本文件,数据列通过分隔符(默认为“|”)进行分隔。使用方法如下:

load from ‘filename’ delimeter ‘delimeter’ insert into Tablename/SynonymName/ViewName(column);

以下是使用load导入数据的示例:

  • 加载单表数据,列分隔符为【,】。

load from ‘…/data/dept.unl’ delimiter ‘,’ insert into dept_01;

  • 尝试加载通过多表关联导出的数据。

load from ‘/home/informix/data/employee_02_1.unl’ delimiter ‘|’ insert into t_employee_02(f_employeeid,f_employeename,f_deptid,f_birthdate);

  在导入大量数据时,一般可以通过取消表的日志,临时使索引失效以及开启PDQ三种途径来提高导入的速度。

这个直接在 DBeaver 新建一个sql编辑器 输入区域,就可以执行 load from 吗? 我执行怎么报SQL 错误 [42000]: A syntax error has occurred., 执行的命令是:LOAD from ‘D:/dm/rb/newtable_1_202410141122.txt’ delimeter ‘|’ insert into testdb:sinodbms.newtable_1(id,name,age,addresss,idcard);

不能在dbeaver中执行unload/load语句,要在shell客户端执行。

$ dbaccess testdb3 -

Database selected.

> load from 't1.unl' insert into t1;

4 row(s) loaded.

> select first 4 * from t1;



aa  1
bb  1

aa  10
bb  10

aa  100
bb  100

aa  1000
bb  1000

4 row(s) retrieved.