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控制文件来写,但是我的还是报错
- 下载最新的版本(4.2.4)
- 文件中的列与表中列数量不相等,可以任选下述方案之一即可:
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列了,和数据文件列一致就可以执行
除了修改表结构,没法从控制文件层面解决吗
没有办法,也尝试过用控制文件,但是不生效