Я обнаружил, что файловые операции выполняются намного быстрее при массовых передачах данных.
Я бы исследовал использование утилиты BCP out для создания текстовых файлов с разделителями из SQL-сервера.Прочитайте: https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-2017
Получить его в Oracle может быть немного сложнее (у меня очень ограниченный опыт работы с Oracle).Что касается следующего вопроса, вы можете исследовать его с помощью скриптов SQL Loader:
Oracle: импорт CSV-файла
Однако при использовании BCP есть несколько ошибок:
- В зависимости от структуры данных (у вас есть запятые и возврат каретки в текстовых полях в ваших данных?), Рассмотрите возможность использования пользовательских разделителей для полей и записей.Это можно легко указать в команде BCP с помощью параметров -t и -r
- Очевидно, убедитесь, что поля и данные совпадают (или, по крайней мере, сопоставимы) между форматами.Вы можете использовать опцию QUERYOUT в BCP для создания пользовательских запросов, которые должны дать вам возможность приводить, если вам нужно, и упорядочивать столбцы так, как вы хотите.
Возможно, это не самое сексуальное решение, но он может работать, может быть очень повторяемым и может видеть высокую пропускную способность данных.Мы делали это для процесса ETL от Sybase ASE к SQL Server и увидели, что время обработки упало до 10% по сравнению с тем, что они использовали для других методов базы данных.
Очевидно, однако, YMMV, поэтому сначала протестируйте.