obloader加载的数据文件有6列,接数表有7列需要怎么处理呀

obloader加载的数据文件有6列,接数表有7列需要怎么处理呀

已经从oracle数据库迁移过来了所有表和存储过程,然后要改一下原来加载数据的链路,sqlldr换成obloader,然后上游下发的数据文件是.txt格式,有六列,接数的表多一列insert_time,这个需要怎么处理呢

你导的源数据只有六列,但目标表有7列? 明显就对不上吖,你应该先让你的源表订正成7列,与目标表保持一致

是不是可以使用–map-path /home/biaoming.map映射文档呢,但是我这里一直报错
unknown options:’–map-path’,’/home/biaoming.map’是什么原因呀

源数据是txt格式上游下发下来的

这个资料是在哪里看到 的?

官网的文档,但是obloader3.x后面好像不支持map,但是可以用ctrl控制文件来写,但是我的还是报错 :joy:

  1. 下载最新的版本(4.2.4)
  2. 文件中的列与表中列数量不相等,可以任选下述方案之一即可:
    2.1 指定 --exclude-column-names 排除掉不需要的列;
    2.2 指定 --include-column-names 包含需要的列;
    2.3 创建控制文件,配置列的映射关系;

我的obloader版本是3.3.0,我的数据文件是test.txt,内容是1|2|3|4,表名是test,然后我的控制文件名是test.ctrl,控制文件内容是lang=java(c1 map(1),c2 map(1),c3 map(1),c4 map(1)),为啥导入到表数据是1234呢,难道不应该是1111嘛

不支持这种用法。你可以为其它列设置default值。

是obloader3.3.0不支持这个用法嘛,列default值可以举个例子吗

obdumper 不支持这种用法。你可以选择只导入一个列。其它列再建表的时候用 default 值。

那如果接数表比接数文件多一列的话,在不改变接数表结构的情况下,需要怎么处理呢

多出的一列 增加 default 默认值啊。

create table test (
c1 int,
c2 int
多出来的列 int default 0
);

可以在控制文件中做处理吗

他的意思你还是得订正数据源,控制文件是第三方控制不了吧

遇到了相同的问题,请问这个问题后来解决了吗?

接数表改成了6列了,和数据文件列一致就可以执行

除了修改表结构,没法从控制文件层面解决吗

没有办法,也尝试过用控制文件,但是不生效