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

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

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

oracle.com/technetwork/database/migration/…
Jared Burrows 25.02.2014 21:22
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
21
1
43 603
12

Ответы 12

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

Это нетривиально, но Oracle Workbench возьмет большую часть T-SQL и преобразует его.

Mark Brady 12.03.2009 00:39

Недешево (995 $), но это подойдет: swissql.com/products/sql-translator/sql-converter.html

Liao 06.11.2009 10:29

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

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

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

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

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

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

DDL

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

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

Таблицы температуры

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

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

Замки

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

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

Прочитать совершено

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

Oracle поступает так на протяжении десятилетий.

так далее

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

Если вы выполняете разовое преобразование, а не пытаетесь поддерживать две версии, вы должны посмотреть на Инструментальные средства миграции Oracle. Этот инструмент работает с Oracle SQLDeveloper (который вам действительно нужен, если вы работаете с Oracle). При этом выполняется преобразование схемы, данных и некоторой части T-SQL в PL / SQL. Хорошо зная и то, и другое, я обнаружил, что он работает примерно на 80%. Достаточно хорош, чтобы окупить преобразование основной части процедур и ручное преобразование оставшихся «более сложных» неизвестных частей.

Недешево (995 долларов), но этот инструмент отлично работает: http://www.swissql.com/products/sql-translator/sql-converter.html

Этот продукт / веб-сайт больше не существует

Lukas Eder 29.01.2019 14:46

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

Я должен кое-что упомянуть.

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

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

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

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

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

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

Oracle SQL Developer можно бесплатно загрузить с сайта Oracle, и его легко установить.

это преобразование из TSQL в PL / SQL, а не наоборот.

Henley Chiu 30.08.2013 22:57

Oracle Scratchlauncher переходит с T на PL. oracle.com/technetwork/database/migration/… Есть и другие инструменты: ceiton.com/CMS/EN/technologies/sql-compiler.html#Solution, но, вероятно, нет серебряной пули.

user16583 30.09.2014 17:19

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

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

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

Итак, вы нашли перевод надежным?

sam yi 09.11.2012 03:01

Для меня это было, да. Прошло некоторое время, поэтому я не уверен, что мне нужно было вносить незначительные изменения, но, возможно, лучше всего просмотреть сценарии (или некоторые из них). Кроме того, я почти уверен, что у меня там не было никаких экзотических вещей. Но они были надежными.

Peter 09.11.2012 11:48

Привет, будет ли он конвертировать наоборот, например, PL SQL => SQL ??

Sanjok Gurung 17.08.2018 13:43

@SanjokGurung Я так не думаю, но вы должны проверить, потому что это было много лет назад.

Peter 17.08.2018 15:36

Он не может прочитать мой сценарий t-sql

Loom 30.12.2020 15:31

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

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

Другие вопросы по теме