Эффективный метод переноса данных из Oracle (SQL Developer) в MS SQL Server.

Ежедневно я опрашиваю несколько таблиц в SQL Developer, фильтрую данные по активности за предыдущий день, добавляю столбец для отметки даты, а затем экспортирую в xlsx. Затем я вручную импортирую каждый файл на сервер MS SQL с помощью мастера импорта и экспорта SQL Server. Занимает много кликов, много ожидания...

По сути, я создаю архив в SQL Server, приложение, которое я запрашиваю, ежедневно перезаписывает данные. Я не являюсь администратором баз данных ни в одной из баз данных, я использую архивные данные для проверки и исследования.

Трудно заставить мою организацию предоставить дополнительное программное обеспечение, я пытался сделать это с помощью SQL Developer, SSMS Express ed и других стандартных инструментов.

Я хочу сделать это разумно автоматизированным либо с помощью сценариев, запланированных задач и т. д. Буду признателен за предложения, которые будут работать в моей текущей ситуации, но если это неразумно, и есть очень разумная альтернатива, я могу вернуться к org для запроса программного обеспечения/доступа/помощи.


person Feva14    schedule 11.02.2019    source источник


Ответы (2)


Вы можете использовать SSIS для импорта данных непосредственно из Oracle в SQL Server, если только вам не нужны файлы .xlsx для другой цели. Вы также можете экспортировать их из Oracle, а затем загрузить из этих файлов в SQL Server, если они вам нужны. Для столбца метки даты можно добавить производный столбец в задачу потока данных с помощью функции SSIS GETDATE() для метки времени, чтобы получить тот же результат. Эта функция возвращает метку времени, и если необходима только дата, функция (DT_DBDATE) может преобразовать ее в тип данных даты, совместимый с этим типом данных SQL Server. После того, как вы настроили пакет SSIS, вы можете запланировать запуск через регулярные промежутки времени в качестве задания агента SQL. Я также рекомендую установить каталог SSIS (SSISDB) и использовать его как источник для запуска пакетов. Следующие ссылки проливают больше света на эти области.

person userfl89    schedule 11.02.2019
comment
Для SSIS (кажется?) требуется версия SSMS Enterprise или Standard, у меня есть только Express. Я немного почитаю ваши ссылки, но я не уверен, что это позволяет избежать моих текущих ограничений. [Изменить) Забыл поблагодарить за уделенное время - Спасибо! - person Feva14; 12.02.2019

Другой вариант, который вы можете рассмотреть (если он поддерживается в SQL Express), — это использование утилиты BCP, которую можно запустить из командной строки.

Утилита BCP позволяет массово копировать данные из текстового файла с разделителями в таблицу SQL Server.

Если вы выберете этот подход, необходимо учитывать следующее:

  • Количество столбцов в исходном файле должно соответствовать количеству столбцов в целевом файле.
  • Типы данных должны совпадать (или быть сопоставимыми)
  • Как правило, пустые строки будут преобразованы в значения NULL, поэтому вам необходимо учитывать, допускают ли столбцы значения NULL.

(чтобы назвать несколько - если вы хотите углубиться, вам также может понадобиться взглянуть на настраиваемые разделители между полями и записями. Не забывайте, что запятые и переводы строки по-прежнему являются допустимыми символами в полях типа char).

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

Прочитайте:

https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-2017

person Ash    schedule 12.02.2019
comment
У меня было много времени, чтобы получить файл формата, подходящий для BCP, но похоже, что это помогает мне в большинстве случаев. Это работает для баз данных на моем локальном хосте, но я получаю ошибки при подключении к удаленному серверу с моей фактической целевой БД. Это немного обременительно для нескольких файлов, разных форматов и не очень переносимых, но это большое улучшение, если я могу заставить сервер разрешать удаленные подключения ... думаю, я снова буду прослушивать администратора базы данных. Спасибо Эш - person Feva14; 13.02.2019
comment
Однако, как только вы сделаете это правильно, он должен быть достаточно пуленепробиваемым. В настоящее время я использую BCP из Sybase ASE и BCP в SQL Server 2016 более 300 миллионов строк в день. На самом деле мы используем его, поскольку он выполняется намного быстрее, чем задачи и преобразования потоков данных SSIS. Самые большие проблемы, с которыми мы сталкиваемся, — это сбои в сети и неизвестные обновления таблиц (которые вы все равно получите с помощью SSIS). Всего наилучшего! - person Ash; 13.02.2019