Java 在Oracle 11.1.0中使用DdlUtils时出现问题

Java 在Oracle 11.1.0中使用DdlUtils时出现问题,java,ant,oracle11g,ddlutils,Java,Ant,Oracle11g,Ddlutils,这个问题类似于问题。因为我的问题(或者至少我认为它)与前面提到的问题略有不同,所以我发布了一个新的问题 我正在使用DdlUtils-1.0、Java-6(OpenJdk)、ojdbc6.jar和oracle11.0。迁移由ant任务启动。任务如下所示: <target name="dump-db" description="Dumps DB" depends=""> <taskdef name="databaseToDdl" classname="org.apache.dd

这个问题类似于问题。因为我的问题(或者至少我认为它)与前面提到的问题略有不同,所以我发布了一个新的问题

我正在使用DdlUtils-1.0、Java-6(OpenJdk)、ojdbc6.jar和oracle11.0。迁移由ant任务启动。任务如下所示:

<target name="dump-db" description="Dumps DB" depends="">
  <taskdef name="databaseToDdl" classname="org.apache.ddlutils.task.DatabaseToDdlTask">
    <classpath>
        <path refid="runtime-classpath"/>
        <path refid="project-classpath"/>
    </classpath>
</taskdef>
  <databaseToDdl modelname="${modelname}" verbosity="DEBUG" databasetype="${source.platform}" 
    usedelimitedsqlidentifiers="true" tabletypes="TABLE" schemapattern="${schemapattern}">      
    <database url="${source.url}"
            driverClassName="${source.driver}"
            username="${source.username}"
            password="${source.passwd}"
            initialsize="5"
            testonborrow="true"
            testonreturn="true"/>

    <writeschemasqltofile failonerror="false" outputfile="${out.dir}/${schema.file.sql}"/>
    <writedtdtofile outputfile="${out.dir}/${schema.file.dtd}"/>
    <writeSchemaToFile failonerror="false" outputFile="${out.dir}/${schema.file.xml}"/>
    <writedatatofile failonerror="false" outputfile="${out.dir}/${data.file.xml}" determineschema="true"/>
  </databaseToDdl>
</target>

${source.platform}设置为“oracle10”,因为ddlutils不支持oracle11。模式定义的创建非常有效,但在转储数据时,我会遇到以下例外情况:

[databaseToDdl]org.apache.ddlutils.model.model异常:未知的JDBC类型代码2007 [databaseToDdl]位于org.apache.ddlutils.model.Column.setTypeCode(Column.java:215) [databaseToDdl]位于org.apache.ddlutils.platform.JdbcModelReader.readColumn(JdbcModelReader.java:781) [databaseToDdl]位于org.apache.ddlutils.platform.oracle.Oracle8ModelReader.readColumn(Oracle8ModelReader.java:117) [databaseToDdl]位于org.apache.ddlutils.platform.JdbcModelReader.readColumns(JdbcModelReader.java:755) [databaseToDdl]位于org.apache.ddlutils.platform.JdbcModelReader.readTable(JdbcModelReader.java:565) [databaseToDdl]位于org.apache.ddlutils.platform.oracle.Oracle8ModelReader.readTable(Oracle8ModelReader.java:102) [databaseToDdl]位于org.apache.ddlutils.platform.oracle.Oracle10ModelReader.readTable(Oracle10ModelReader.java:80) [databaseToDdl]位于

在jdbc中列出了类型代码。显然,ddlutils从jdbc驱动程序获取此类型代码,但在java.sql.Types中找不到相应的类型


有人知道如何解决这个问题吗?

已经很晚了,5年后,
然而,这种想法对未来的少数人来说是有帮助的

访问:
org.apache.ddlutils.model.TypeMap

方法:
getJdbcTypeName(int-typeCode)

编写小逻辑,将2007设置为12
ie;


问题:
DdlUtils中的类型映射是通过exisitinf java.sql.Types枚举完成的。然而,对于Oracle11g来说,只有很少的额外类型。因此产生了问题。

希望有帮助。

已经很晚了,5年后,
然而,这种想法对未来的少数人来说是有帮助的

访问:
org.apache.ddlutils.model.TypeMap

方法:
getJdbcTypeName(int-typeCode)

编写小逻辑,将2007设置为12
ie;


问题:
DdlUtils中的类型映射是通过exisitinf java.sql.Types枚举完成的。然而,对于Oracle11g来说,只有很少的额外类型。因此产生了问题。
希望能有所帮助。

其他信息:调试一点后,我发现在读取数据库“unnamed”中表“WWV\u MIG\u FORMS”中类型为2007的列“XML\u CONTENT”时出错。不是oracle的专家,我想ant的任务是读取系统表。如果这是真的,这将表明WriteDataTable忽略相应属性中指定的schemapattern。更新:我解决了schemapattern的问题。在org.apache.ddlutils.task.WriteDataToFileCommand#execute中,我将模型添加到以下调用中:getDataIO().writeDataToXML(getPlatform(),model,new FileOutputStream(_outputFile),_encoding);此修补程序已包含在ddlutils存储库中。类型2007的一般问题仍未解决。其他信息:调试一段时间后,我发现在数据库“unnamed”中的表“WWV_MIG_FORMS”中读取类型为2007的列“XML_CONTENT”时出错。不是oracle的专家,我想ant的任务是读取系统表。如果这是真的,这将表明WriteDataTable忽略相应属性中指定的schemapattern。更新:我解决了schemapattern的问题。在org.apache.ddlutils.task.WriteDataToFileCommand#execute中,我将模型添加到以下调用中:getDataIO().writeDataToXML(getPlatform(),model,new FileOutputStream(_outputFile),_encoding);此修补程序已包含在ddlutils存储库中。2007型的一般问题仍未解决。
if(typeCode == 2007){
typeCode = java.sql.Types.VARCHAR;
}