Существует ли инструмент для преобразования из одного 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 это делается с помощью +
.
Если бы мне нужно было поддерживать несколько систем управления базами данных, я бы сделал это тщательно, с уровнем доступа к данным для каждой системы. Конечно, это потребует некоторой работы, но модульность будет весьма полезной.
Одна из альтернатив, которой я вполне доволен, — XPO от DevExpress. Это система объектно-реляционного сопоставления, которая поддерживает несколько баз данных. Вы проектируете свои классы, определяете правильную строку подключения, и схема базы данных будет создана для вас, и вы можете легко применить crud к своим классам в коде. Чтобы использовать другую систему баз данных, измените только строку подключения!
И нет, я не связан с DevExpress, кроме как как очень довольный клиент.
Console предлагает мгновенное решение, предоставляющее быструю и надежную утилиту преобразования SQL-запросов, которая ускоряет миграцию. Консоль поддерживает миграцию между базами данных Oracle, SQL Server, IBM DB2, MySQL, Sybase, PostgreSQL, Informix и Netezza. Это программное обеспечение также имеет функции для тестирования преобразованных SQL-запросов в целевых базах данных.