有个mysql的数据库,现在要把mysql的数据库换成mssql的,要把mysql的数据库导出到mssql,我用c#.net写个程序来进来对导。这里碰到了一个问题。mysql有字段是blob类型,里面存的是一个较长的字符串,而在mssql这个字段是varchar类型的。所以想把这个mysql的blob里的字符串读出来,写到mssql的varchar中。可是不懂怎么读blob字符串,读出来全是乱码。有没有高手帮忙下。mysql blob mssql varchar

解决方案 »

  1.   

    mstempsql = @" INSERT INTO [zcgl_individual] (
    [id],[createOrg], [createTime], [createUser], [orders], [other], [status], [updateOrg], [updateTime], [updateUser],
            [address], [allowUse], [certificate], [customerNo], [mobile], [nameCn], [postCode],  [sex]  )VALUES (@Id, @Createorg,  @Createtime,  @Createuser,  @Orders,  @Other,  @Status,  @Updateorg,  @Updatetime,  @Updateuser,  @Address,  @Allowuse,  @Certificate,  @Customerno,  @Mobile,  @Namecn,  @Postcode,  @Sex)";            
                mysql = "select * from zcgl_individual";
                mycm = new MySqlCommand(mysql, myconn);
                mydr = mycm.ExecuteReader();
                while (mydr.Read())
                {
                    if (mydr.HasRows)
                    {
                        mssql = mstempsql;
                        mssql = mssql.Replace("@Id","'"+ Guid.NewGuid().ToString()+"'");
                        mssql = mssql.Replace("@Createorg", "'" + mydr.GetString("createorg") + "'");
                        mssql = mssql.Replace("@Createtime", "'" + mydr.GetString("createtime") + "'");
                        mssql = mssql.Replace("@Createuser", "'" + mydr.GetString("createuser") + "'");
                        mssql = mssql.Replace("@Orders", "'" + mydr.GetString("orders") + "'");
                        mssql = mssql.Replace("@Other", "'" + mydr.GetString("other") + "'");
                        mssql = mssql.Replace("@Status", "'" + mydr.GetString("status") + "'");
                        mssql = mssql.Replace("@Updateorg", "'" + mydr.GetString("updateorg") + "'");
                        mssql = mssql.Replace("@Updatetime", "'" + mydr.GetString("updatetime") + "'");
                        mssql = mssql.Replace("@Updateuser", "'" + mydr.GetString("updateuser") + "'");
                        mssql = mssql.Replace("@Address", "'" + mydr.GetString("address") + "'");
                        mssql = mssql.Replace("@Allowuse", "'" + mydr.GetString("allowuse") + "'");//mysql里这个字段是BLOB的,读不出来
                        mssql = mssql.Replace("@Certificate", "'" + mydr.GetString("certificate") + "'");
                        mssql = mssql.Replace("@Customerno", "'" + mydr.GetString("customerNo") + "'");
                        mssql = mssql.Replace("@Mobile", "'" + mydr.GetString("mobile") + "'");
                        mssql = mssql.Replace("@Namecn", "'" + mydr.GetString("namecn") + "'");
                        mssql = mssql.Replace("@Postcode", "'" + mydr.GetString("postcode") + "'");
                        mssql = mssql.Replace("@Sex", "'" + mydr.GetString("sex") + "'");
                        Console.WriteLine(s.ToString());
                    }
                }
      

  2.   

    mssql = mssql.Replace("@Allowuse", "'" + mydr.GetString("allowuse") + "'");int index = xx //"allowuse"字序号byte[] byts = new byte[255];
    dr.GetBytes(1, 0, byts, 0, 255);mssql = mssql.Replace(index, "'" + System.Text.Encoding.UTF8.GetString(byts) + "'");
      

  3.   

    将blob以byte数组读取,再将byte数组转为字符串
      

  4.   


    用你的方法,读出的的字符串跟 mydr.GetString("allowuse")这样读是一样的
      

  5.   

    那你得先确认一下存到blob中是以什么方式存的,一般字符串都是以ascii,utf-8,unicode存,可以都试下