1.关于外部表,DCP培训时老师曾说默认的列分隔符是逗号,但我实际操作下来默认的是竖线|,不知道是不是达梦版本的问题,我这边使用的是DM8:
(1)创建ot.txt
1,AAA,aaa
2,BBB,bbb
3,
4,DDD
5,EEE,eee
(2)创建控制文件ot2.ctl
Load data
Infile ‘ot.txt’
Into table T_OT_2
(3)执行外部表语句
create external table "TEST"."T_OT_2"
(
"ID" INT,
"NAME" VARCHAR(50),
"COLUMN_1" VARCHAR(50)
) from default directory "DMDIR" location ('ot2.ctl');
(4)执行查询外部表语句
select * from "TEST"."T_OT_2";
报错:-7082:外部表数据错误
(5)修改控制文件ot2.ctl添加fields ‘,’ 或者将ot.txt中的逗号改为|,再次执行查询语句均能正常返回数据。
2.快速装载dmfldr命令CONTROL后的控制文件路径要加转义符将单引号转移
(1)cd 到达梦安装目录的bin目录后执行./dmfldr help给出的说明文档中的示例
例程: ./dmfldr SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl' 并未包含转移符,在不加转义符的情况下执行
[dmdba@localhost bin]$ ./dmfldr SYSDBA/SYSDBA CONTROL='/dm/dmfldr/fl2.ctl'
会报错:
dmfldr V8
initialize fail.
参数分析出错[/]
(2)在加转义符的情况下执行
[dmdba@localhost bin]$ ./dmfldr SYSDBA/SYSDBA CONTROL='/dm/dmfldr/fl2.ctl'
则正常加载数据
(3)当然DCP培训老师在培训时也演示过要加转义符,这里能否对help说明示例上也做适当详细说明,否则按照这个help示例来也搞不清楚错在哪里。
3.外部表和快速装载控制文件写法比较
外部表控制文件ot2.ctl写法示例:
Load data
Infile ‘ot.txt’
Into table test2
这里的test2我理解为将要创建的外部表的一个临时别名,随便叫什么都可以,只要符合表命名规范,不一定要和外部表一个名字;导入文件ot.txt不支持路径写法,必须和ot2.ctl一起。
快速装载控制文件fl1.ctl写法示例:
Load data
Infile ‘/dm/dmfldr/fl1.txt’
Into table “TEST”.”test1”
这里的 ‘/dm/dmfldr/fl1.txt’ 需要导入文件的完整路径,否则会报错无法找到导入文件,test1一定要已经存在的表,并且加上完整的带双引号的模式名和完整的带双引号的表名,否则会报错表不存在。
文章
阅读量
获赞