Экспорт данных таблицы оракула как sql Insert-String - PullRequest
1 голос
/ 25 января 2010

это я, Франциско, написал первый вопрос нажмите здесь , но теперь у меня есть аккаунт. Я постараюсь объяснить это. Для работы мне нужен файл .txt, который содержит вставки строки SQl из таблицы Oracle. Я не могу использовать программное обеспечение, как жаба, потому что мне нужно сделать это с Java Code. Я не пытаюсь получить логи вставок, мне нужно экспортировать их из таблицы. Клиент просит об этом, это очень важно. Вы говорите, что обычный способ сделать это - использовать утилиту DataPump, но с помощью этих инструментов я получу текстовый файл? Я читал, что DataPump работает с двоичными файлами. используя Java JDBC и метаданные, мне нужно преобразовать все в файл String, хорошо, я согласен, но мне нужно написать много кода, чтобы узнать, какой тип я получаю из таблицы для его анализа. Один пример - с типами Date, программы Oracle анализируют его как to_date ('0005-11-21', 'DD / MM / RR'), а java toTostrig сделает что-то вроде '2009-1-25 13:00:00'. , Метод Java toString будет обрезать некоторые типы чисел, поэтому мне нужно знать, сделал ли это кто-то или может мне помочь.

Я новичок на этой странице, может кто-нибудь отредактировать первый вопрос или как я могу обновить его, если я сделал это с незарегистрированным пользователем?

Большое спасибо. Франциско

1 Ответ

1 голос
/ 26 января 2010

В прошлом году мы должны что-то сделать, сделать записи и записи в базу данных (Ingres, Derby и HSQL) из / в файл. Основная идея заключалась в том, чтобы иметь класс, реализующий метод, который возвращает строку, отформатированную в соответствии с типом данных SQL.
Это было что-то вроде:

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));
    }
}

извините, я не могу размещать реальные коды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...