Преобразовать запрос SQL для другой базы данных

Существует ли инструмент для преобразования из одного SQL-запроса одной базы данных в другую?

Для SQLite

> CREATE TABLE ConstantValues(    Id int
> AUTOINCREMENT primary key   ,
> VariableName varchar(50)    , Values
> varchar(150) )

Для SQL Server

> CREATE TABLE ConstantValues(    Id
> INTEGER identity(1,1) primary key   ,
> VariableName varchar(50)   , Values
> varchar(150) )

Аналогично, он отличается для Oracle и SQL Server. Также в объявлении ограничений внешнего ключа, если есть инструмент, позволяющий нам получать SQL из любой базы данных в любую базу данных, это было бы очень полезно для меня.

Я создал такую ​​функцию, но она не кажется хорошим решением:

private string changeSQL(string sql)
{
    switch (dbtype)
    {
        case dbType.SQLite:
            sql = sql.Replace(" int ", " INTEGER ");
            sql = sql.Replace(" identity(1,1) ", " AUTOINCREMENT ");
            break;
        case dbType.MsAscess:
            sql = sql.Replace(" int ", " ");
            sql = sql.Replace(" identity(1,1) ", "");
            sql = sql.Replace("AUTOINCREMENT", "AUTOINCREMENT");

            break;
    }
    return (sql);
}

Аналогично для SQLite конкатенация выполняется с использованием || , тогда как в SQL Server это делается с помощью + .

10
задан Peter Mortensen 28 November 2010 в 10:50
поделиться

2 ответа

Если бы мне нужно было поддерживать несколько систем управления базами данных, я бы сделал это тщательно, с уровнем доступа к данным для каждой системы. Конечно, это потребует некоторой работы, но модульность будет весьма полезной.

Одна из альтернатив, которой я вполне доволен, — XPO от DevExpress. Это система объектно-реляционного сопоставления, которая поддерживает несколько баз данных. Вы проектируете свои классы, определяете правильную строку подключения, и схема базы данных будет создана для вас, и вы можете легко применить crud к своим классам в коде. Чтобы использовать другую систему баз данных, измените только строку подключения!

И нет, я не связан с DevExpress, кроме как как очень довольный клиент.

http://www.devexpress.com/Products/NET/ORM/info.xml

2
ответ дан 4 December 2019 в 00:22
поделиться

SwisSQL Console 5.0

Console предлагает мгновенное решение, предоставляющее быструю и надежную утилиту преобразования SQL-запросов, которая ускоряет миграцию. Консоль поддерживает миграцию между базами данных Oracle, SQL Server, IBM DB2, MySQL, Sybase, PostgreSQL, Informix и Netezza. Это программное обеспечение также имеет функции для тестирования преобразованных SQL-запросов в целевых базах данных.

6
ответ дан 4 December 2019 в 00:22
поделиться