Пример #1
0
        public string GenerateTableWithInserts(SqlTable sqlTable, string tableName, int maxBulk, SqlInsertStringFormat insertStringFormart)
        {
            var builderFinal = new StringBuilder();

            if (sqlTable != null)
            {
                var builderIntermediate = new StringBuilder();
                var builderList         = new List <StringBuilder>();
                var lastRow             = sqlTable.Rows.LastOrDefault();
                var countBulk           = 0;

                builderIntermediate = new StringBuilder();
                builderList.Add(builderIntermediate);

                foreach (var sqlRow in sqlTable.Rows)
                {
                    if (countBulk == maxBulk)
                    {
                        builderIntermediate = new StringBuilder();
                        builderList.Add(builderIntermediate);
                        countBulk = 0;
                    }

                    var strCols = new StringBuilder();
                    foreach (var sqlColumn in sqlRow.Columns)
                    {
                        if (strCols.Length > 0)
                        {
                            if (insertStringFormart != SqlInsertStringFormat.None)
                            {
                                strCols.Append("\r\n");
                            }

                            strCols.Append(",");
                        }

                        strCols.Append(ObjectToSqlValue(sqlColumn.Value, sqlColumn.ColumnTypeDefinition.Type));

                        if (insertStringFormart == SqlInsertStringFormat.BreakLineAndShowColumnNameForEachColumn)
                        {
                            strCols.Append(" -- ");
                            strCols.Append(sqlColumn.ColumnTypeDefinition.Name);
                            strCols.Append(" ");
                            strCols.Append(sqlColumn.ColumnTypeDefinition.TypeFormatted);
                        }
                    }

                    builderIntermediate.Append("(");

                    if (insertStringFormart != SqlInsertStringFormat.None)
                    {
                        builderIntermediate.Append("\r\n");
                    }

                    builderIntermediate.Append(strCols.ToString());

                    if (insertStringFormart != SqlInsertStringFormat.None)
                    {
                        builderIntermediate.Append("\r\n");
                    }

                    builderIntermediate.Append(")");

                    if (sqlRow != lastRow && countBulk + 1 < maxBulk)
                    {
                        builderIntermediate.AppendLine(", ");
                    }

                    countBulk++;
                }

                builderFinal.Append("CREATE TABLE ");
                builderFinal.Append(tableName);
                builderFinal.Append(" ");
                builderFinal.AppendLine("(");

                var last = sqlTable.Headers.LastOrDefault();
                foreach (var header in sqlTable.Headers)
                {
                    builderFinal.AppendLine("[" + header.Name + "] " + header.TypeFormatted);
                    if (last != header)
                    {
                        builderFinal.Append(", ");
                    }
                }

                builderFinal.AppendLine(");");

                foreach (var bulkInsert in builderList)
                {
                    builderFinal.AppendLine();
                    builderFinal.Append("INSERT INTO ");
                    builderFinal.Append(tableName);
                    builderFinal.Append(" ");
                    builderFinal.AppendLine("VALUES");
                    builderFinal.AppendLine(bulkInsert.ToString());
                }
            }

            return(builderFinal.ToString());
        }
Пример #2
0
        public string GenerateTableWithInserts(SqlTable sqlTable, string tableName, int maxBulk, SqlInsertStringFormat insertStringFormart)
        {
            var builderFinal = new StringBuilder();
            if (sqlTable != null)
            {
                var builderIntermediate = new StringBuilder();
                var builderList = new List<StringBuilder>();
                var lastRow = sqlTable.Rows.LastOrDefault();
                var countBulk = 0;

                builderIntermediate = new StringBuilder();
                builderList.Add(builderIntermediate);

                foreach (var sqlRow in sqlTable.Rows)
                {
                    if (countBulk == maxBulk)
                    {
                        builderIntermediate = new StringBuilder();
                        builderList.Add(builderIntermediate);
                        countBulk = 0;
                    }

                    var strCols = new StringBuilder();
                    foreach (var sqlColumn in sqlRow.Columns)
                    {
                        if (strCols.Length > 0)
                        {
                            if (insertStringFormart != SqlInsertStringFormat.None)
                                strCols.Append("\r\n");

                            strCols.Append(",");
                        }

                        strCols.Append(ObjectToSqlValue(sqlColumn.Value, sqlColumn.ColumnTypeDefinition.Type));

                        if (insertStringFormart == SqlInsertStringFormat.BreakLineAndShowColumnNameForEachColumn)
                        {
                            strCols.Append(" -- ");
                            strCols.Append(sqlColumn.ColumnTypeDefinition.Name);
                            strCols.Append(" ");
                            strCols.Append(sqlColumn.ColumnTypeDefinition.TypeFormatted);
                        }
                    }

                    builderIntermediate.Append("(");

                    if (insertStringFormart != SqlInsertStringFormat.None)
                        builderIntermediate.Append("\r\n");

                    builderIntermediate.Append(strCols.ToString());

                    if (insertStringFormart != SqlInsertStringFormat.None)
                        builderIntermediate.Append("\r\n");

                    builderIntermediate.Append(")");

                    if (sqlRow != lastRow && countBulk + 1 < maxBulk)
                        builderIntermediate.AppendLine(", ");

                    countBulk++;
                }

                builderFinal.Append("CREATE TABLE ");
                builderFinal.Append(tableName);
                builderFinal.Append(" ");
                builderFinal.AppendLine("(");

                var last = sqlTable.Headers.LastOrDefault();
                foreach (var header in sqlTable.Headers)
                {
                    builderFinal.AppendLine("[" + header.Name + "] " + header.TypeFormatted);
                    if (last != header)
                        builderFinal.Append(", ");
                }

                builderFinal.AppendLine(");");

                foreach (var bulkInsert in builderList)
                {
                    builderFinal.AppendLine();
                    builderFinal.Append("INSERT INTO ");
                    builderFinal.Append(tableName);
                    builderFinal.Append(" ");
                    builderFinal.AppendLine("VALUES");
                    builderFinal.AppendLine(bulkInsert.ToString());
                }
            }

            return builderFinal.ToString();
        }