Подтвердить что ты не робот

Перевод Microsoft T-SQL в Oracle SQL

Я работал с T-SQL в течение многих лет, но я только что перешел в организацию, которая потребует написания некоторого материала Oracle, возможно, просто простых операций CRUD, по крайней мере, до тех пор, пока я не найду ноги. Я не собираюсь переносить базы данных из одной в другую, просто взаимодействуя с существующими базами данных Oracle с точки зрения разработки приложений. Имеются ли инструменты или утилиты для простого перевода T-SQL в Oracle SQL, мне нужен поиск по ключевым словам.

PS Я слишком ленив к RTFM, к тому же это не будет большой частью моей роли, поэтому я просто хочу, чтобы что-то ускорило меня.

4b9b3361

Ответ 1

Перечисленные языковые различия тривиальные по сравнению с логическими различиями. Любой может найти NVL. Что трудно найти

DDL

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

В Oracle нам не нравится DDL в хранимых процедурах, поэтому вы переходите через обручи. Для выполнения функции DDL вам необходимо использовать EXECUTE IMMEDIATE.

Таблицы темпов

В SQL Server, когда логика становится немного жесткой, общая задача состоит в том, чтобы сократить код sql и разрешить его для таблицы temp, а затем следующий шаг выполняется с использованием этой таблицы temp. MSSS делает это очень легко.

В Oracle нам это не нравится. Выбирая промежуточный результат, вы полностью не позволяете Оптимизатору находить ярлык для вас. НО Если вы должны остановиться на полпути и сохранить промежуточные результаты, Oracle хочет, чтобы вы сделали временную таблицу заранее, а не на лету.

Замки

В MSSS вы беспокоитесь о блокировке, у вас есть подсказки nolock для применения к DML, у вас есть эскалация блокировки, чтобы уменьшить количество блокировок.

В Oracle мы не беспокоимся об этом таким образом.

Чтение завершено

До недавнего времени MSSS не полностью обрабатывала изоляцию Read Committed, поэтому вы беспокоились о грязных чтениях.

Oracle существует уже несколько десятилетий.

и т.д.

У MSSS нет понятия индексов Bitmap, IOT, кластеров таблиц, кластеров хэшей одиночной таблицы, неинтересных индексов, обеспечивающих уникальные ограничения....

Ответ 2

У меня создается впечатление, что большинство ответов сосредоточены на переносе всей базы данных или просто указывают на некоторые различия между T-SQL и PL/SQL. У меня недавно была такая же проблема. База данных Oracle существует, но мне нужно преобразовать весь загрузчик сценариев T-SQL в PL/SQL.

Я установил Oracle SQL Developer и запустил Translation Scratch Editor (Инструменты > Миграция > Редактор Scratch Editor).

Затем просто введите свой T-SQL, выберите правильный перевод в раскрывающемся списке (он должен по умолчанию "T-SQL to PL/SQL" ) и преобразовать его.

Ответ 3

Мне нужно кое-что упомянуть.

1) Когда я работал над Oracle 8, вы не могли бы сделать "Select @Result", вам вместо этого нужно было использовать таблицу фиктивных файлов следующим образом: "Выберите @Result из двойного". Не уверен, что эта смехотворность все еще существует.

2) В мире Oracle они, похоже, любят курсоры, и вам лучше читать их, они используют их все время AFAICS.

Удачи и наслаждайтесь,

он не отличается от MS SQL. К счастью, мне больше не нужно работать с этим, и я снова в теплое удобство инструментов MS.

Ответ 4

Наиболее важными отличиями для простого T-SQL являются:

  • NVL заменяет ISNULL
  • SYSDATE заменяет GETDATE()
  • CONVERT не поддерживается
  • Столбцы идентификаторов должны быть заменены последовательностями < - не технически T- или PL/, а просто SQL

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

@jodonell: таблица, на которую вы ссылаетесь, немного устарела, oracle стал несколько более стандартным, совместимым после того, как 9i поддерживает такие вещи, как CASE и ANSI внешние соединения

Ответ 5

Если вы замените свой ISNULL и NVL ерундой COALESCE, он будет работать в T-SQL и PL/SQL!

Ответ 6

Это не тривиально, чтобы отображать их взад и вперед, поэтому я сомневаюсь, что есть инструмент, который делает это автоматически. Но эта ссылка может помочь вам: http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm

Ответ 7

Я сделал несколько SQL-серверов для миграции оракула. Невозможно выполнить миграцию без перезаписи внутреннего кода. Слишком много различий между двумя базами данных и, что более важно, различия между двумя наборами умений программистов. Многие менеджеры считают, что 2 являются взаимозаменяемыми, у меня были менеджеры, которые попросили меня скопировать хранимые процедуры с сервера SQL и скомпилировать их в oracle, а не ключ! Жаба на сегодняшний день является лучшим инструментом на рынке для поддержки приложения оракула. Разработчик SQL в порядке, но был разочаровывающим по сравнению с жабами. Я надеюсь, что оракул однажды поймает свой продукт до жабы, но его пока нет. У вас хороший день:) возможно, если вы переходите к oracle, это по какой-то причине, и для того, чтобы удовлетворить это требование, вам нужно будет переписать код конца или у вас будет много проблем.

Ответ 8

В Oracle SQL Developer есть инструмент, называемый редактором Scratch Editor. Вы можете найти его в меню "Инструменты" > "Миграция".

Oracle SQL Developer - это бесплатная загрузка из Oracle, и это простая установка.

Ответ 9

Если вы делаете одноразовое преобразование, а не пытаетесь поддержать две версии, вы должны посмотреть Oracle Migration Workbench. Этот инструмент работает с Oracle SQLDeveloper (который вы действительно должны иметь, если работаете с Oracle). Это делает преобразование схемы, данных и некоторых из T-SQL в PL/SQL. Зная оба хорошо, я нашел, что это заняло около 80%. Достаточно хорошо, чтобы превратить большую часть процедур, и вручную перевести оставшиеся "более жесткие" неизвестные части.

Ответ 11

Несколько человек упомянули здесь, переходя назад и вперед. Я не знаю инструмент для преобразования из MSSQL в Oracle, но я использовал бесплатный инструмент MS для преобразования Oracle db в MSSQL, и он работал у меня и преобразовал большой db без проблем, которые я могу назвать. Он похож на инструмент Access to MSSQL, который MS также предоставляет бесплатно. Наслаждайтесь

Ответ 12

У jOOQ есть общедоступный бесплатный переводчик, доступ к которому можно получить на веб-сайте здесь: https://www.jooq.org/translate.

Он поддерживает DML, DDL и несколько процедурных синтаксических элементов. Если вы хотите выполнить перевод локально через командную строку, можно приобрести лицензию, а командная строка работает следующим образом:

$ java -cp jooq-3.11.9.jar org.jooq.ParserCLI -t ORACLE -s "SELECT substring('abcde', 2, 3)"
select substr('abcde', 2, 3) from dual;

Смотрите: https://www.jooq.org/doc/latest/manual/sql-building/sql-parser/sql-parser-cli

(Отказ от ответственности, я работаю на продавца)