Экспорт таблиц из SQL Server для импорта в Oracle 10g - PullRequest
4 голосов
/ 13 ноября 2009

Я пытаюсь экспортировать некоторые таблицы из SQL Server 2005, а затем создать эти таблицы и заполнить их в Oracle.

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

Сначала я сгенерировал скрипты для получения структуры таблицы, затем изменил их, чтобы они соответствовали стандартам синтаксиса Oracle (т.е. изменил nvarchar на varchar2)

Далее я экспортировал данные с помощью мастера экспорта SQL Server, который создал плоский файл csv. Однако моя главная проблема заключается в том, что я не могу найти способ заставить SQL Server использовать двойные кавычки. Один из моих столбцов содержит запятые, поэтому, если я не найду способ для SQL-сервера заключить в кавычки имена столбцов, у меня возникнут проблемы с импортом этого.

Кроме того, я иду сложным путем, или есть более простой способ сделать это?

Спасибо

РЕДАКТИРОВАТЬ: цитируя я ссылаюсь на цитирование значений столбцов в CSV. Например, у меня есть столбец, который содержит адреса, такие как

101 High Street, Sometown, Some округ, PO5TC053

Не изменяя его на следующее, это может вызвать проблемы при загрузке CSV

"101 High Street, Sometown, Some округ, PO5TC053 "

Ответы [ 3 ]

4 голосов
/ 13 ноября 2009

Посмотрев некоторые параметры с помощью SQLDeveloper или попытавшись вручную выполнить экспорт / импорт, я обнаружил в студии управления SQL Server утилиту, которая дает желаемые результаты и проста в использовании, выполните следующее

  1. Перейти к исходной схеме на SQL Server
  2. Щелкните правой кнопкой мыши> Экспорт данных
  3. Выбор источника в качестве текущей схемы
  4. Выберите пункт назначения как «поставщик OLE Oracle»
  5. Выберите свойства, затем добавьте имя службы в первое поле, затем имя пользователя и пароль, обязательно нажмите «запомнить пароль»
  6. Введите запрос, чтобы получить желаемые результаты для переноса
  7. Введите имя таблицы, затем нажмите кнопку «Редактировать»
  8. Измените сопоставления, измените nvarchars на varchar2 и INTEGER на NUMBER
  9. Run
  10. Повторите процесс для оставшихся таблиц, сохраните как задания, если вам потребуется сделать это в будущем
1 голос
/ 13 ноября 2009

Как сказал Роберт, я бы настоятельно рекомендовал снова указывать названия столбцов. В результате вам придется заключать их в кавычки не только при импорте данных, но и всякий раз, когда вы хотите сослаться на этот столбец в операторе SQL - и да, это, вероятно, также означает в вашем программном коде. Построение операторов SQL становится полной проблемой!

Из того, что вы пишете, я не уверен, имеете ли вы в виду имена столбцов или данные в этих столбцах. (Может ли SQLServer действительно иметь запятую в столбце name ? Я был бы очень удивлен, если бы была веская причина для этого!) Цитирование содержимого столбца должно быть сделано для любой строки -подобные столбцы (хотя я обнаружил, что другие символы обычно работают лучше, поскольку необходимость «экранировать» кавычки становится другой проблемой) Если вы экспортируете в CSV, это должно быть вариантом ... но тогда я не знаком с мастером экспорта.

Другая идея для перемещения данных (в зависимости от масштаба вашего проекта) заключается в использовании инструмента ETL / EAI. Я немного поигрался с набором Pentaho и его компонентом Kettle. Он предлагал хороший выбор вариантов перемещения данных из одного места в другое. Это может быть немного слишком большим для простой передачи, но если это большая «миграция» с соответствующим томом, это может быть хорошим вариантом.

1 голос
/ 13 ноября 2009

Используйте инструменты миграции SQLDeveloper

Я думаю, что цитирование имен столбцов в oracle - это то, что вы не должны использовать. Это вызывает все виды проблем.

...