从已有数据库表生成Insert语句的小工具

  有时,需要把数据从一个数据库转移到另一个数据库,如果数据不是很多,但是又不是手工可以完成那么少,就可以使用该小工具了。

该小小工具将一个表里的所有数据生成insert into 语句。其实现方式是:将数据读入到DataTable,然后逐行生成Sql语句,主要代码如下:

 

 public string GetInsertSql(string tableName)
        {
            string sql = string.Empty;
            DataBase db = new DataBase();
            DataSet ds = db.GetEntity(tableName);
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                sql += this.GetSqlByDataRow(item, ds.Tables[0]);
            }
            return sql;
        }

        private string GetSqlByDataRow(DataRow row, DataTable dataTable)
        {
            StringBuilder sql = new StringBuilder("insert into ");
            sql.Append(dataTable.TableName);
            sql.Append("(");
            foreach (DataColumn item in dataTable.Columns)
            {
                sql.Append(item.ColumnName);
                sql.Append(",");
            }
            sql.Remove(sql.Length - 1, 1);
            sql.Append(")");
            sql.Append("values");
            sql.Append("(");
            foreach (DataColumn item in dataTable.Columns)
            {
                if (row[item] == DBNull.Value)
                {
                    sql.Append("null");
                }
                else
                {
                    sql.Append("'");
                    if (item.DataType == typeof(DateTime))
                    {
                        sql.Append(Convert.ToDateTime(row[item]).ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    else
                    {
                        sql.Append((row[item]).ToString());
                    }
                    sql.Append("'");
                }
                sql.Append(",");
            }
            sql.Remove(sql.Length - 1, 1);
            sql.Append(");\r\n");
            return sql.ToString();
        }

点击下载项目

posted @ 2011-01-27 22:13  会长  阅读(2153)  评论(3编辑  收藏  举报