将oracle表数据导出为sql Insert-String

时间:2010-01-25 17:41:58

标签: java oracle jdbc

这是弗朗西斯科写的第一个问题click-here,但现在我有了一个帐户。我会试着解释一下。对于Job,我需要一个.txt文件,其中包含从Oracle Table插入的SQl字符串。我不能像蟾蜍一样使用软件,因为我需要使用Java代码。我不想尝试插入日志,我需要从表中导出它。客户要求它,这是至关重要的。你说正常的方法是使用DataPump实用程序,但使用这个工具,我会得到一个文本文件吗?我读到DataPump使用二进制文件。使用Java JDBC和元数据,我需要转换所有的String文件,确定它我同意,但我必须编写很多代码来了解我从Table获得什么样的类型来解析它。一个例子是日期类型,oracle软件将其解析为to_date('0005-11-21','DD / MM / RR'),java toTostrig将执行类似'2009-1-25 13:00:00'的操作。 Java toString方法将截断一些Number类型所以我需要知道是否有人这样做或者可以帮助我。

我是这个页面的新手,任何人都可以编辑第一个问题,或者如果我使用非注册用户进行更新,我该如何更新?

非常感谢你。旧金山

1 个答案:

答案 0 :(得分:1)

去年,我们必须做一些事情,从/向文件读取和写入数据库(Ingres,Derby和HSQL)记录。
基本思想是让一个类实现一个方法,该方法返回一个根据数据的SQL类型格式化的String 它类似于:

import static java.sql.Types.*;
...
private static final String DATE_FORMAT = "yyyy-MM-dd";

public static String formatDate(Date date) {        
    DateFormat format = new SimpleDateFormat(DATE_FORMAT);
    return format.format(date);
}
...
@Override
public String format(int type, Object value) throws SQLException {
    switch (type) {
        case INTEGER:
        case REAL:
        case DOUBLE:
        case SMALLINT:
            return value.toString(); 
        case CHAR:
        case LONGVARCHAR:
        case VARCHAR:
            return (String) value;
        case DATE:
            return formatDate((Date) value);
        case TIME:
            return formatTime((Time) value);
        case TIMESTAMP:
            return formatTimestamp((Timestamp) value);

        // TODO missing some types here

        default:
            throw new SQLException("unhandled type " + getTypeName(type));
    }
}

抱歉,我不允许发布实际代码