sourcetip

Microsoft T-SQL에서 Oracle SQL로 변환

fileupload 2023. 6. 12. 21:49
반응형

Microsoft T-SQL에서 Oracle SQL로 변환

저는 수년간 T-SQL과 함께 일했지만, 이제 막 Oracle 자료를 작성해야 하는 조직으로 옮겼습니다. 적어도 제 발을 찾을 때까지는 단순한 CRUD 작업이 필요할 것입니다.애플리케이션 개발의 관점에서 기존 Oracle 데이터베이스와 상호 작용하여 데이터베이스를 마이그레이션하지는 않습니다.T-SQL을 Oracle SQL로 쉽게 변환할 수 있는 도구나 유틸리티가 있는지, 키워드 매퍼를 찾고 있습니다.

추신: 저는 RTFM에 너무 게으르고, 게다가 그것은 제 역할에 큰 부분을 차지하지 않을 것이기 때문에 저는 단지 제가 조금 더 빨리 속도를 낼 수 있는 무언가를 원합니다.

지금까지 나열된 언어 차이는 논리적 차이에 비해 미미합니다.누구나 NVL을 조회할 수 있습니다.찾아보기 힘든 것은

DDL

SQL 서버에서는 언제 어디서나 번거로움 없이 스키마를 조작할 수 있습니다.

Oracle에서는 저장 프로시저에서 DDL을 사용하는 것을 좋아하지 않기 때문에 쉽게 실행할 수 있습니다.DDL 기능을 수행하려면 EXECUMENT Immediate를 사용해야 합니다.

온도 테이블

SQL Server에서는 논리가 다소 어려워지면 SQL을 바로 가기로 하고 임시 테이블로 해결한 다음 해당 임시 테이블을 사용하여 다음 단계를 수행하는 것이 일반적입니다. MSSS를 사용하면 이 작업을 매우 쉽게 수행할 수 있습니다.

Oracle에서는 이를 좋아하지 않습니다.중간 결과를 강제로 지정하면 Optimizer가 바로 가기를 찾을 수 없습니다. 그러나 중간 결과를 중단하고 중간 결과를 유지해야 할 경우 Oracle은 즉시가 아닌 미리 임시 테이블을 만들기를 원합니다.

자물쇠

잠금에 대해 걱정하는 MSSS에서는 DML에 적용할 잠금 힌트가 없고 잠금 수를 줄이기 위해 잠금 에스컬레이션이 있습니다.

Oracle에서는 이러한 문제에 대해 그런 식으로 걱정하지 않습니다.

읽기 커밋됨

최근까지 MSSS는 읽기 전용 분리를 완전히 처리하지 못했기 때문에 더티 읽기를 걱정했습니다.

오라클은 수십 년 동안 그렇게 해왔습니다.

기타

MSSS에는 비트맵 인덱스, IOT, 테이블 클러스터, 단일 테이블 해시 클러스터, 고유한 제약 조건을 적용하는 고유하지 않은 인덱스에 대한 개념이 없습니다.

저는 대부분의 답변이 전체 데이터베이스 마이그레이션에 초점을 맞추거나 T-SQL과 PL/SQL의 몇 가지 차이점을 지적하는 것에 초점을 맞춘다는 인상을 받았습니다.저는 최근에 같은 문제를 겪었습니다.Oracle 데이터베이스가 존재하지만 T-SQL 스크립트의 전체 로드를 PL/SQL로 변환해야 합니다.

Oracle SQL Developer를 설치하고 Translation Scratch Editor(Tools > Migration > Scratch Editor)를 실행했습니다.

그런 다음 T-SQL을 입력하고 드롭다운 목록에서 올바른 변환(기본값은 'T-SQL to PL/SQL')을 선택하여 변환합니다.

할 말이 있어요.

제가 Oracle 8에서 작업했을 때 "Select @Result"를 할 수 없었습니다. 대신 "Select @Result from dual"과 같이 더미 테이블을 사용해야 했습니다.그 우스꽝스러움이 아직도 존재하는지 확실하지 않습니다.

오라클 세계에서 그들은 커서를 좋아하는 것처럼 보이며, 당신은 커서에 대해 읽어보는 것이 좋을 것입니다. 그들은 항상 AFAICS를 사용합니다.

행운과 즐거움을 빕니다.

MS SQL과 크게 다르지 않습니다.감사하게도, 저는 더 이상 그것을 다룰 필요가 없고 다시 MS 툴의 따뜻한 편안함으로 돌아왔습니다.

ISNULL 및 NVL 넌센스를 COALESCE로 대체하면 T-SQL 및 PL/SQL에서 작동합니다!

앞뒤로 지도를 만드는 것도 사소한 일이 아니기 때문에 자동으로 하는 도구가 있는지 의심스럽습니다.하지만 이 링크가 도움이 될 수도 있습니다. http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm

일반 T-SQL의 가장 중요한 차이점은 다음과 같습니다.

  • NVL이 ISNULL을 대체합니다.
  • 시스템 날짜가 GETDATE()를 대체합니다.
  • CONVERT는 지원되지 않습니다.
  • ID 열은 <-- 기술적으로 T- 또는 PL/이 아니라 SQL로만 대체되어야 합니다.

참고. 조인에 사용되지 않는 SQL Server *= 구문을 사용하지 않는 것으로 가정합니다.

@jodonell:링크하는 테이블은 약간 구식입니다. 9i가 CASE 및 ANSI 외부 조인을 지원한 후 오라클은 다소 표준 규정을 준수하게 되었습니다.

SQL 서버에서 Oracle로의 마이그레이션을 몇 번 수행했습니다.백엔드 코드를 다시 쓰지 않고 마이그레이션하는 방법은 없습니다.두 데이터베이스 간에 너무 많은 차이가 있고 더 중요한 것은 프로그래머의 두 마인드셋 간의 차이입니다.많은 관리자들은 두 가지가 서로 호환된다고 생각합니다. 저는 관리자들이 저에게 SQL 서버에서 저장 프로시저를 복사하여 단서가 아닌 오라클로 컴파일하도록 요청했습니다.Toad는 Oracle 애플리케이션을 지원하는 시장에서 가장 뛰어난 도구입니다. SQL 개발자는 괜찮지만 Toad에 비해 실망스러웠습니다.나는 오라클이 언젠가 그들의 제품을 따라잡을 수 있기를 바라지만 아직 거기에 없습니다.좋은 하루 되세요 :) Oracle로 마이그레이션하는 경우에는 이유가 있고 이러한 요구 사항을 충족하기 위해 백엔드 코드를 다시 작성해야 하거나 많은 문제가 발생할 수 있습니다.

Oracle SQL Developer에는 Translation Scratch Editor라는 도구가 있습니다.도구 > 마이그레이션에서 찾을 수 있습니다.

Oracle SQL Developer는 Oracle에서 무료로 다운로드할 수 있으며 쉽게 설치할 수 있습니다.

2가지 버전을 지원하는 대신 일회성 변환을 수행하는 경우 Oracle Migration Workbench를 검토해야 합니다.이 툴은 Oracle의 SQL Developer(Oracle을 사용하는 경우 반드시 필요함)와 함께 작동합니다.이렇게 하면 스키마, 데이터 및 일부 T-SQL을 PL/SQL로 변환할 수 있습니다.둘 다 잘 알고 있었기 때문에, 저는 그것이 약 80%의 일을 한다는 것을 알았습니다.대부분의 절차를 변환하고 나머지 "더 어려운" 알려지지 않은 부분을 수동으로 변환할 수 있는 가치가 있습니다.

저렴하지는 않지만($995) 이 툴은 매우 유용합니다. http://www.swissql.com/products/sql-translator/sql-converter.html

몇 명의 사람들이 앞뒤로 전환하는 것을 언급했습니다.MSSQL에서 Oracle로 변환하는 툴에 대해서는 잘 모르지만, 무료 MS 툴을 사용하여 Oracle db를 MSSQL로 변환했습니다. 이 툴은 저에게 도움이 되었고 제가 호출할 수 있는 문제 없이 큰 db를 변환했습니다.MS가 무료로 제공하는 MSSQL 액세스 도구와 유사합니다.즐거운 시간 되세요.

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

(Disclaimer, 저는 공급업체에서 일합니다.)

언급URL : https://stackoverflow.com/questions/41781/microsoft-t-sql-to-oracle-sql-translation

반응형