Есть ли способ конвертировать строки таблицы базы данных Derby в операторы вставки SQL

Я успешно экспортировал схему Derby с помощью ddlUtils, но как мне экспортировать данные таблицы в derby для вставки операторов SQL?

2 ответа

Решение

Если вы хотите использовать сторонний инструмент для этого, вы можете использовать jOOQ

public class ExportAsInsert {
    public static void main(String[] args) {
        try (DSLContext ctx = DSL.using(url, user, password)) {
            ctx.meta()
               .getSchemas()
               .stream()

               // Filter out those schemas that you want to export
               .filter(schema -> schema.getName().equals("TEST"))

               // Get the tables for each schema...
               .flatMap(schema -> schema.getTables().stream())

               // ... and format their content as INSERT statements.
               .forEach(table -> System.out.println(ctx.fetch(table).formatInsert()));
        }
    }
}

Существует известная проблема, заключающаяся в том, что приведенное выше генерирует неправильное имя таблицы в операторе вставки. Вы можете исправить это, исправив вывод:

System.out.println(
    ctx.fetch(table).formatInsert().replace("UNKNOWN_TABLE", table.getName()));

(Отказ от ответственности: я работаю на компанию за JOOQ)

  1. Запустите свой SQL-запрос, например «выбрать * из схемы.таблица;».
  2. В окне, где отображаются строки, выберите их все с помощью клавиатуры, а не «control+A», что не имеет никакого эффекта.
  3. Щелкните правой кнопкой мыши и в контекстном меню выберите «Показать сценарий SQL для INSERT»: появится всплывающее окно, и вам просто нужно скопировать содержимое в текстовый файл.

Примечание: я использую Netbeans 8.2.

Другие вопросы по тегам