Есть ли инструмент для преобразования из одного 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 - с помощью +
.