Ejemplo n.º 1
0
        public static string MigrateDataScript(string SQL, string TableName)
        {
            int    posOfCreateTable = SQL.IndexOf("CREATE TABLE");
            string s = SQL.Substring(posOfCreateTable + 12);

            string[] strArr = SplitMultiLines(s);
            strArr[0] = string.Empty;
            strArr    = SprocOps.RemoveInputParameterPrecision(strArr);
            int i = 1;

            for (i = 1; i < strArr.Length; i++)
            {
                string columnName = RemoveDataTypes(strArr[i]).Replace(",", string.Empty).Trim();
                if (strArr[i].Contains("NUMBER") || strArr[i].Contains("BOOLEAN") || strArr[i].Contains("IDENTITY"))
                {
                    strArr[i - 1] += "' + ";
                    strArr[i]      = "IsNULL(CONVERT(" + columnName + ", SQL_VARCHAR),'NULL') + ',";
                }
                else if (strArr[i].Contains("DATE"))
                {
                    strArr[i - 1] += "' + ";
                    //strArr[i] = "to_date(" + columnName + " AS CHAR(19))  + ''', ";
                    strArr[i] = "'to_date(''' + CAST(COALESCE(" + columnName + ",'1900/01/01 12:00:00')" + " AS CHAR(19)) + ''',''yyyy/mm/dd HH24:MI:SS'')' + ',";
                }
                else if (strArr[i].Contains("PRIMARY KEY") || strArr[i].Contains(")"))
                {
                    strArr[i] = string.Empty;
                }
                else
                {
                    strArr[i - 1] += "''' + ";
                    strArr[i]      = "IsNULL(REPLACE(" + columnName + ", '''', ''''''),'NULL')  + ''', ";
                }
            }

            strArr[0] = string.Empty;

            for (i = strArr.Length - 1; i > 0; i--)
            {
                if (strArr[i].Length > 0)
                {
                    strArr[i]  = strArr[i].Replace(" + ''', ", string.Empty);
                    strArr[i] += " + ''');' AS VARCHAR(4000)) AS SQL";
                    strArr[i] += Environment.NewLine + "FROM " + (char)34 + TableName + (char)34;
                    break;
                }
            }

            s  = "SELECT CAST('INSERT INTO " + TableName + " VALUES (' + " + Environment.NewLine;
            s += string.Join(Environment.NewLine, SplitMultiLines(string.Join(Environment.NewLine, strArr)));
            s  = s.Replace("', + ''');' AS VARCHAR(4000))", "');' AS VARCHAR(4000))");
            return(s);
        }