SqlServer转Oracle的方法逻辑代码
2017-10-22 21:24:16 访问(1970) 赞(0) 踩(0)
#region SqlServer转Oracle
/// <summary>
///
/// </summary>
public readonly static string[] preFillChar = new string[5] { " ", " ", "" + '\t', "" + '\t', "(" };
/// <summary>
///
/// </summary>
public readonly static string[] postFillChar = new string[5] { " ", "" + '\t', " ", "" + '\t', ")" };
/// <summary>
///
/// </summary>
public readonly static string[] textFillChar = new string[2] { " ", "" + '\t' };
/// <summary>
///
/// </summary>
/// <param name="input"></param>
/// <param name="oldChar"></param>
/// <param name="newChar"></param>
/// <returns></returns>
protected string ToReplace(string input, string oldChar, string newChar)
{
string oText = "";
string nText = "";
int idx = -1;
string lowerInput = input.ToLower();
int maxLoop = 9999;
for (int i = 0; i < 4; ++i)
{
oText = preFillChar[i] + oldChar + postFillChar[i];
nText = preFillChar[i] + newChar + postFillChar[i];
for (int j = 0; j < maxLoop; ++j)
{
idx = lowerInput.IndexOf(oText);
if (idx == -1)
break;
input = input.Substring(0, idx) + nText + input.Substring(idx + oText.Length);
lowerInput = input.ToLower();
}
}
return input;
}
/// <summary>
///
/// </summary>
/// <param name="input"></param>
/// <param name="oldChar"></param>
/// <param name="newChar"></param>
/// <returns></returns>
protected string ToReplaceText(string input, string oldChar, string newChar)
{
string oText = "";
string nText = "";
int idx = -1;
string lowerInput = input.ToLower();
int maxLoop = 9999;
for (int i = 0; i < 2; ++i)
{
oText = textFillChar[i] + oldChar + "(";
nText = textFillChar[i] + newChar + "(";
for (int j = 0; j < maxLoop; ++j)
{
idx = lowerInput.IndexOf(oText);
if (idx == -1)
break;
input = input.Substring(0, idx) + nText + input.Substring(idx + oText.Length);
lowerInput = input.ToLower();
}
}
return input;
}
/// <summary>
/// 转SQL语句
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
protected string ToSQL(string input)
{
if (input == null || input.Length == 0)
return "";
input = ToReplace(input, "bigint", "number");
input = ToReplace(input, "int", "integer");
input = ToReplace(input, "datetime", "date");
input = ToReplace(input, "getdate()", "sysdate");
input = ToReplace(input, "(getdate())", "sysdate");
input = ToReplace(input, "ntext", "long");
input = ToReplace(input, "float", "number");
input = ToReplaceText(input, "nvarchar", "varchar2");
input = ToReplaceText(input, "decimal", "number");
return input;
}
#endregion SqlServer转Oracle
/// <summary>
///
/// </summary>
/// <returns></returns>
public string CreateTableSqlToOracle()
{
string sql = CreateTableSql;
sql = sql.Replace("create table dbo.", "create table ");
sql = ToSQL(sql);
return sql;
}
上一条:
下一条:
相关评论
发表评论