创建/查询Db2 FIXED格式外部表失败,寻求技术帮助
Db2 FIXED格式外部表创建与查询问题解决方案
问题1:创建含REF字段的外部表触发SQL0007N错误
错误原因
语句中的反斜杠\是SQL不支持的无效字符,文档里的\@1属于排版转义标记,实际执行时无需添加反斜杠,直接使用@1即可引用REF定义的偏移量。
修正后的创建语句
db2 "CREATE EXTERNAL TABLE TABLE1_FIXED (col1 int, col2 varchar(20)) USING (DATAOBJECT '/home/myuser/myfile.fixed' FORMAT FIXED LAYOUT(REF BYTES 1,col1 BYTES @1, col2 varchar(20) BYTES 4) RECORDLENGTH @1+6)"
问题2:查询简单外部表触发SQL1476N(-5199)错误
错误原因
外部表定义RECORDLENGTH 1指定每条记录长度为1字节,但数据文件TABLE.fixed内容为连续的abc(无换行符),导致Db2无法正确拆分记录;此外还可能存在文件编码不匹配、Db2实例用户无读取权限等问题。
解决方案
- 调整数据文件格式:确保每条记录单独占一行,且每行长度严格等于
RECORDLENGTH定义值。例如修改TABLE.fixed内容为:a b c - 检查文件权限:确保Db2实例用户对
/home/myuser/TABLE.fixed拥有读权限,可执行:chmod o+r /home/myuser/TABLE.fixed - 匹配字符编码:若使用非ASCII字符,需在外部表定义中添加编码匹配参数,示例:
db2 "CREATE EXTERNAL TABLE TABLE_EXT (col1 char(1) not null) USING (DATAOBJECT '/home/myuser/TABLE.fixed' FORMAT FIXED LAYOUT(col1 char(1)) RECORDLENGTH 1 CODEPAGE 1208)"
内容的提问来源于stack exchange,提问作者Steph
相关产品推荐
相关产品推荐

