在做项目的时候,发现要导入的一个库中出现了一张特殊的表,表名为CREATE$JAVA$LOB$TABLE
,使得hive建表失败,原因是无法识别特殊字符 $
。
具体报错信息如下:
Exception is: org.apache.hive.service.cli.HiveSQLException: Error while
compiling statement: FAILED: ParseException line 1:53 cannot
recognize input near '$' 'java' '$' in create table statement
网上资料 —— Using loadjava - Oracle PL/SQL Programming, Third Edition [Book]
资料中关于 CREATE$JAVA$LOB$TABLE
里面有这么一段话:
A table created in each schema, containing Java code elements. Each new class you load using loadjava will generate one row in this table.
关于这张表,实际上就是在使用操作系统的load java程序将java code的java文件上传到oracle数据库里时存储的。
另外还会有张表可能会创建,表名为JAVA$CLASS$MD5$TABLE
,该表是一张哈希表,用于跟踪给定的schema下的java元素。
还有一个是LOADLOBS
,这个不是表,而是每个schema下都会有的一个包,用于将java code元素作为一个LOB(即large object)读取到数据库当中。
具体的读取流程图请查看上面的链接。
网友评论