Docs Menu
Docs Home
/
Relational Migrator
/ /

뷰 변환

이 페이지의 내용

  • 이 작업에 대하여
  • 시작하기 전에
  • 단계
  • 예제
  • 다음 단계
  • 자세히 알아보기

쿼리 변환기는 SQL 을 사용하여 뷰를 생성하고 이를 동등한 MQL 로 변환합니다. 쿼리 변환기는 SQL 코드를 변환할 때 프로젝트에 정의된 매핑 규칙 및 스키마 변환을 고려합니다. 변환 프로세스에 대한 자세한 내용은 뷰 변환 예시를 참조하세요.

  • 쿼리 변환기는 길거나 복잡한 쿼리, 트리거 또는 저장 프로시저를 변환할 수 없는 AI 기술을 사용합니다. 일부 쿼리는 올바르게 변환되지 않을 수 있고, 다른 쿼리는 전혀 변환되지 않을 수 있습니다.

  • 쿼리 변환기는 현재 프로젝트의 관계형 스키마, MongoDB 스키마 및 매핑 규칙을 사용하여 쿼리를 변환하는 방법을 결정합니다. 쿼리가 관계형 스키마에 없는 테이블을 참고하거나 MongoDB collection에 매핑되지 않은 테이블을 참고하는 경우 변환이 실패하거나 올바르지 않을 수 있습니다.

  • 변환된 쿼리, 트리거, 뷰 및 저장 프로시저는 프로젝트에 저장되며 프로젝트 가져오기 및 내보내기를 통해 유지됩니다.

  • SQL 쿼리는 40 000 텍스트 문자로 제한됩니다.

  • 왼쪽 Query Converter 창에서 이전 전환 내역을 볼 수 있습니다. 각 변환에는 변환 결과를 나타내는 아이콘이 있습니다. 객체 옆에 아이콘이 없으면 아직 변환이 시도되지 않은 것입니다.

    Icon
    설명
    Spinner
    이제 변환이 실행 중입니다.
    녹색 확인 표시
    전환에 성공했습니다.
    빨간색 느낌표
    마지막 시도에서 전환이 실패했습니다.

프로덕션 환경에 배포하기 전에 항상 쿼리 변환기에서 생성된 코드를 검토하고 테스트합니다.

1

Code Generation 탭에서 Query Converter 창을 클릭합니다.

2
  • 프로젝트에서 쿼리 변환기를 처음 사용하는 경우 Import From Database 을(를) 클릭합니다.

  • 프로젝트에 이미 SQL 코드가 변환된 경우 왼쪽 창에서 Manage Database Objects 버튼을 클릭합니다.

3
  1. 소스 데이터베이스에 대한 연결 세부 정보를 지정합니다.

    자세한 내용은 관계형 데이터베이스 연결 문자열을 참조하세요.

  2. Connect를 클릭합니다.

4
  1. Import Database Objects 모달에서 데이터베이스를 클릭합니다.

  2. 다음을 클릭합니다. 아이콘을 클릭합니다.

  3. 다음을 클릭합니다. Views 옆에 있는 아이콘입니다.

  4. 변환할 뷰를 선택하려면 다음을 클릭합니다. 아이콘을 클릭합니다. 기본적으로 모든 보기가 선택되어 있습니다.

  5. Save를 클릭합니다.

5
  1. 왼쪽 창에서 Views 아래의 뷰 이름을 클릭합니다.

    SQL 코드가 Imported View 창에 표시됩니다.

  2. Convert 버튼을 클릭합니다. 쿼리 변환기가 코드를 변환할 때까지 기다립니다.

    변환된 MongoDB 코드가 Converted MongoDB Query 창에 표시됩니다.

    쿼리 변환기에 오류가 있는 경우 Converted MongoDB Query 창에서 세부 정보를 볼 수 있습니다.

  3. 다음을 클릭합니다. 아이콘을 클릭하여 MongoDB 코드를 클립보드에 복사합니다.

  4. 생성된 MongoDB 코드를 테스트하고 유효성을 검사합니다.

Filter 텍스트 상자를 사용하여 객체 이름과 SQL 구문을 기준으로 쿼리, 저장 프로시저, 트리거 및 뷰를 필터링할 수 있습니다.

아래 예제는 MongoDB 코드로 변환된 예제 Nodewind 데이터베이스 의 PostgreSQL 뷰를 보여줍니다.

쿼리에서 MongoDB 뷰를 생성하려는 경우:

다음 예제는 MongoDB로 변환된 내부 조인 뷰를 보여줍니다.

SQL Syntax
MongoDB 구문
SELECT
O.ORDER_ID,
O.CUSTOMER_ID,
O.ORDER_DATE,
OD.UNIT_PRICE,
OD.DISCOUNT
FROM ORDERS AS O
INNER JOIN ORDER_DETAILS AS OD
ON O.ORDER_ID = OD.ORDER_ID;
async function query(db) {
return await db.collection('orders').aggregate(
[
{
$lookup:
{
from: "orderDetails",
localField: "orderId",
foreignField: "orderId",
as: "orderDetails"
},
},
{
$unwind: "$orderDetails",
},
{
$project:
{
orderId: 1,
customerId: 1,
orderDate: 1,
unitPrice: "$orderDetails.unitPrice",
discount: "$orderDetails.discount"
}
}
]
).toArray();
}

MongoDB에서 이 뷰를 만드는 셸 명령은 다음과 같습니다.

db.createView("VW_OrderDetails", "orders",
[
{
$lookup:
{
from: "orderDetails",
localField: "orderId",
foreignField: "orderId",
as: "orderDetails"
},
},
{
$unwind: "$orderDetails",
},
{
$project:
{
orderId: 1,
customerId: 1,
orderDate: 1,
unitPrice: "$orderDetails.unitPrice",
discount: "$orderDetails.discount"
}
}
]
)

다음 예제는 MongoDB로 변환된 뷰별 애그리게이션 그룹을 보여줍니다.

SQL Syntax
MongoDB 구문
SELECT
POSTAL_CODE,
COUNT(*) AS CUSTOMERCOUNT
FROM CUSTOMERS
GROUP BY POSTAL_CODE
ORDER BY CUSTOMERCOUNT DESC;
async function query(db) {
return db.collection('customers').aggregate(
[
{
$group:
{
_id: "$postal_code",
customercount: { $sum: 1 }
}
},
{
$sort: { customercount: -1 }
}
]
).toArray();
}

MongoDB에서 이 뷰를 만드는 셸 명령은 다음과 같습니다.

db.createView("VW_Customers", "customers",
[
{
$group:
{
_id: "$postal_code",
customercount: { $sum: 1 }
}
},
{
$sort: { customercount: -1 }
}
]
)

돌아가기

Atlas Triggers 변환