【发布时间】:2010-08-26 06:08:48
【问题描述】:
有没有一种工具可以将一个数据库的一个 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 中是使用 + 完成的。
【问题讨论】:
-
刚刚查看了一个像这样从 Oracle 移植到 MSSQL 的第 3 方应用程序。他们编写代码来实现 SEQUENCES。除了在简单的情况下,切换 RDBMS 还应该重新设计数据库。
-
如果你得到了你想要的信息,不要忘记将答案标记为已接受..