Я создаю утилиту массовой загрузки в Java, которая будет считывать строки из таблиц из исходной базы данных и заполнять данные в целевой базе данных, поскольку база данных назначения пуста.
Я начал с оператора select, как показано ниже: Это будетверните мне партии и как заказ был гарантирован заказ на пункт.Все работает нормально, при условии, что никакая запись с прошлой датой (созданная_дата) не вставлена, пока эта массовая утилита в процессе
SELECT * FROM dbo.${batch.name}
ORDER BY created_date
OFFSET ${batch.offset} ROWS
FETCH NEXT ${batch.batchSize} ROWS ONLY;
Но позже я понимаю, что есть некоторые таблицы, в которых нет столбца create_date.
Согласно SQL-серверу порядок не гарантируется, если вы не укажете явный порядок по предложению.Поэтому я не могу удалить порядок по, но так как созданный_дат не во всех таблицах, этот запрос не будет выполнен.
Существует ли универсальный запрос выбора, который может вернуть мне строки в порядке, учитывая, что все таблицы неиметь общий столбец для порядка по предложению ИЛИ Любой запрос, который может вернуть строки в порядке вставки?
Будет ли работать следующий запрос?Что, если во время выполнения этой пакетной утилиты было добавлено больше строк, используя следующий запрос?
SELECT * FROM dbo.${batch.name}
ORDER BY (SELECT 1)
OFFSET ${batch.offset} ROWS
FETCH NEXT ${batch.batchSize} ROWS ONLY;
Спасибо.