导出表中数据,生成插入脚本

#region 生成数据表中数据的脚本
  public static  string CreateDataScript(string tableName)
  {

   bool isIdEntity=false;//此表中是否有标识列(自增)
   string commandText = String.Format("SELECT  c.name ,biaoshi=COLUMNPROPERTY( c.id,c.name,'IsIdentity') ,t.name "+
                     "FROM syscolumns c inner join  systypes t on c.xusertype=t.xusertype "+
                                 "WHERE c.ID = OBJECT_ID('{0}')",tableName);

   DataTable fieldList = DBHelper.ExecuteDataTable(CommandType.Text,commandText);
            if(fieldList ==null || fieldList.Rows.Count==0)
    return "";

   string getvalue = String.Format("SELECT * FROM [{0}]",tableName);

   DataTable dt = DBHelper.ExecuteDataTable(CommandType.Text,getvalue);
   if(dt==null || dt.Rows.Count==0)
    return "";

   string middle ="";

   for(int j=0;j<dt.Rows.Count;j++)
   {
    string fieldString="",valueString="";

    DataRow dr = dt.Rows[j];

    for(int i=0;i<fieldList.Rows.Count;i++)
    {
     string fieldName = fieldList.Rows[i][0].ToString();
     string biaoshi   = fieldList.Rows[i][1].ToString();
     
     if(biaoshi=="1")//如果此列是标识列
      isIdEntity = true;

     fieldString += "["+fieldName+"],";
     valueString += "'"+dr[fieldName]+"',";
    }
    fieldString = fieldString.Substring(0,fieldString.Length-1);
    valueString = valueString.Substring(0,valueString.Length-1);

                middle+=String.Format("\n INSERT INTO [{0}]({1}) \n VALUES({2})",tableName,fieldString,valueString);
   }

   string script = "";
   if(isIdEntity )
      script = String.Format("SET IDENTITY_INSERT [{0}] ON \n"+middle+
                           "\n\nSET IDENTITY_INSERT [{0}] OFF"+" \n Go",tableName,middle);
   else
    script = "\n"+middle;

            return script;
  }
  #endregion

转载于:https://www.cnblogs.com/meteorcui/archive/2005/11/16/2021241.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值