Menu Docs
Página inicial do Docs
/
Relational Migrator
/ /

Converter procedimentos armazenados

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Passos
  • Exemplos
  • Próximos passos
  • Saiba mais

Você pode importar e converter seus procedimentos armazenados SQL em código MongoDB com o conversor de query. O conversor de query considera as regras de mapeamento e as transformações de esquema definidas em seu projeto ao converter seu código SQL.

  • O conversor de query usa tecnologia de AI que pode não ser capaz de converter query, triggers ou procedimentos armazenados longos ou complexos. Algumas queries podem não ser convertidas corretamente, enquanto outras podem não ser convertidas.

  • O conversor de query utiliza o esquema relacional, o esquema MongoDB e as regras de mapeamento em seu projeto atual para determinar como as queries devem ser convertidas. As conversões podem falhar ou estar incorretas se as queries fizerem referência a tabelas que não estão em seu esquema relacional ou se não estiverem mapeadas para as coleções do MongoDB.

  • Query, Atlas Triggers, visualizações e procedimentos armazenados convertidos são salvos em seu projeto e persistem por meio da importação e exportação do projeto.

  • As queries SQL estão limitadas a 40,000 caracteres de texto.

  • Você pode visualizar o histórico de conversões anteriores no painel Query Converter à esquerda. Cada conversão tem um ícone indicando o resultado da conversão. Se um objeto não tiver um ícone próximo a ele, ainda não foi tentada uma conversão:

    Icon
    Descrição
    Controle giratório
    A conversão agora está sendo executada.
    Marca de verificação verde
    A conversão foi bem-sucedida.
    Ponto de interrogação vermelho
    A conversão falhou na última tentativa.
  • O MongoDB não tem um tipo de objeto de sinônimo oficial para o procedimento armazenado SQL. Em vez disso, o MongoDB oferece suporte a JavaScript personalizado e código de driver que hospeda a lógica do banco de dados de dados. Parte da modernização do seu aplicação é escolher a linguagem de programação e a opção de hospedagem que melhor atenda às necessidades do seu aplicação . Você pode hospedar seu código de procedimento armazenado convertido em seu aplicação ou com funções do MongoDB App Services.

  • Sempre revise e teste o código gerado pelo conversor de query antes de implementá-lo em um ambiente de produção.

1

Na guia Code Generation , clique no painel Query Converter .

2
  • Se for a primeira vez que você utiliza o conversor de query em seu projeto, clique em Import From Database.

  • Se o seu projeto já tiver convertido código SQL, clique no botão Manage Database Objects no painel esquerdo.

3
  1. Especifique os detalhes da conexão com seu reconhecimento de data center de origem.

    Para obter detalhes, consulte Connection Strings do Banco de Dados Relacional.

  2. Clique em Connect.

4
  1. No modal Import Database Objects , clique em ao lado de Database.

  2. Clique em ao lado do esquema.

  3. Clique em ícone ao lado de Stored Procedures.

    Dica

    Para alternar procedimentos armazenados para conversão, clique em ícone ao lado do nome do procedimento armazenado.

  4. Clique em Save.

    O código de cada procedimento armazenado no reconhecimento de data center do seu projeto é importado para o seu projeto e está visível no painel Query Converter , em Stored Procedures.

5
  1. Clique no nome de um procedimento armazenado no painel esquerdo em Stored Procedures.

    O código é exibido no painel Imported Stored Procedure .

  2. Selecione Target Language no menu suspenso.

    O conversor de Query suporta conversões de procedimento armazenado para JavaScript, C# e Java.

  3. Clique no botão Convert . Aguarde o conversor de query converter seu código.

    O código MongoDB convertido é exibido no painel Converted MongoDB Query .

    Se o conversor de consultas tiver erros, você poderá ver os detalhes no painel Converted MongoDB Query.

  4. Clique em no painel Converted MongoDB Query para copiar o código do MongoDB para a área de transferência.

  5. Teste e valide o código MongoDB gerado.

    Dica

    Você pode usar a caixa de texto Filter para filtrar query, procedimentos armazenados, Atlas Triggers e visualizações com base no nome do objeto e na sintaxe SQL.

O conversor de query pode converter seus procedimentos armazenados em código Javascript, C# ou Java. Os exemplos abaixo mostram conversões para cada idioma.

O exemplo a seguir mostra um procedimento armazenado do MySQL convertido em JavaScript:

BEGIN
DECLARE v_rentals INT;
DECLARE v_out INT;
SELECT COUNT(*) INTO v_rentals
FROM rental
WHERE inventory_id = p_inventory_id;
IF v_rentals = 0 THEN
RETURN TRUE;
END IF;
SELECT COUNT(rental_id) INTO v_out
FROM inventory LEFT JOIN rental USING(inventory_id)
WHERE inventory.inventory_id = p_inventory_id
AND rental.return_date IS NULL;
IF v_out > 0 THEN
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END
async function query(db, p_inventory_id) {
const v_rentals = await db.collection('rental').countDocuments(
{ inventoryId: p_inventory_id }
);
if (v_rentals === 0) {
return true;
}
const v_out = await db.collection('inventory').aggregate([
{
$lookup: {
from: 'rental',
localField: 'inventoryId',
foreignField: 'inventoryId',
as: 'rentalData'
}
},
{
$match: {
inventoryId: p_inventory_id,
'rentalData.returnDate': { $exists: false }
}
},
{
$count: 'rentalId'
}
]).toArray();
if (v_out.length > 0 && v_out[0].rentalId > 0) {
return false;
} else {
return true;
}
}

O exemplo a seguir mostra um procedimento armazenado MySQL convertido para C#:

BEGIN
DECLARE v_customer_id INT;
DECLARE EXIT HANDLER FOR NOT FOUND RETURN NULL;
SELECT customer_id INTO v_customer_id
FROM rental
WHERE return_date IS NULL
AND inventory_id = p_inventory_id;
RETURN v_customer_id;
END
async Task<int?> Query(IMongoDatabase db)
{
var rentalCollection = db.GetCollection<BsonDocument>("rental");
var filter = Builders<BsonDocument>.Filter.Eq("inventoryId", p_inventory_id) & Builders<BsonDocument>.Filter.Eq("returnDate", null);
var result = await rentalCollection.Find(filter).FirstOrDefaultAsync();
return result != null ? result["customerId"].AsInt32 : (int?)null;
}

O exemplo a seguir mostra um procedimento armazenado do MySQL convertido em Java:

BEGIN
SELECT inventory_id
FROM inventory
WHERE film_id = p_film_id
AND store_id = p_store_id
AND NOT inventory_in_stock(inventory_id);
SELECT COUNT(*)
FROM inventory
WHERE film_id = p_film_id
AND store_id = p_store_id
AND NOT inventory_in_stock(inventory_id)
INTO p_film_count;
END
void query(MongoDatabase db) {
int p_film_id = 0;
int p_store_id = 0;
int p_film_count = 0;
MongoCollection<Document> inventoryCollection = db.getCollection("inventory");
Bson filter = Filters.and(Filters.eq("filmId", p_film_id), Filters.eq("storeId", p_store_id), Filters.not(inventory_in_stock("inventoryId")));
FindIterable<Document> result = inventoryCollection.find(filter);
for (Document doc : result) {
System.out.println(doc.getInteger("inventoryId"));
}
p_film_count = (int) inventoryCollection.countDocuments(filter);
}

Voltar

Converter query