• 新老平台转换数据导入总结


    新老平台转换数据导入总结

    移动公司使用的一个老的内部发布平台,欲更新为新平台,而老平台的内容,要全部转换到新平台上。

    文章数据的导入主要就是SQL语句INSERT搞定。不同的字段对应一下而已。
    但问题出在老平台的附件数据,为二进制保存在数据库中。
    新的发布平台,附件为正常文件。

    附件数量不是太多,一千多,但手工的话,也够忙的。
    我是懒人,写了一个小程序,从老的库中读取二进制数据,写入新的平台保存文件的目录。
    并在新平台的库中,INSERT一条数据。
    主要代码如下:
    //从数据库读取并写入文件
    //参考网上代码写的第一个,但后来发现执行效率奇低。失败!
    while (dr.Read())

        fs 
    = new FileStream(filename,FileMode.CreateNew);
        bw 
    = new BinaryWriter(fs);
        startIndex 
    = 0;
        retval 
    = dr.GetBytes(2, startIndex, outbyte, 0, bufferSize);
       
    while (retval == bufferSize)
        {
          bw.Write(outbyte);
          bw.Flush();
         
    startIndex += bufferSize;
          retval 
    = dr.GetBytes(2, startIndex, outbyte, 0, bufferSize);
         }
        
    bw.Write(outbyte, 0, (int)retval - 1);
         bw.Flush();

    //修改后的代码,OK
    while (dr.Read())
    {
     byte[] tmp;
     tmp
    =(byte[])dr["ENCLS"];                   
     bw.Write(tmp);
    }

    //将C:\test.rmvb写入库中,测试效率时使用的大文件
    private void button2_Click(object sender, System.EventArgs e)
            {
                SqlConnection con 
    = new SqlConnection("Server=(local);uid=sa;pwd=;database=netserver");
                SqlDataAdapter da 
    = new SqlDataAdapter("Select * From dbo.Document_appendix",con);
                SqlCommandBuilder MyCB 
    = new SqlCommandBuilder(da);
                DataSet ds 
    = new DataSet("MyImages");
                da.MissingSchemaAction 
    = MissingSchemaAction.AddWithKey;
                FileStream fs 
    = new FileStream(@"C:\test.rmvb", FileMode.OpenOrCreate, FileAccess.Read);
                
    byte[] MyData= new byte[fs.Length];
                fs.Read(MyData, 
    0, System.Convert.ToInt32(fs.Length));
                fs.Close();
                da.Fill(ds,
    "MyImages");
                DataRow myRow;
                myRow
    =ds.Tables["MyImages"].NewRow();
                myRow[
    "filename"= "test.rmvb";
                myRow[
    "ENCLS"= MyData;
                ds.Tables[
    "MyImages"].Rows.Add(myRow);
                da.Update(ds, 
    "MyImages");
                con.Close();
                MessageBox.Show(
    "Done!Congratulation!");       
            }


  • 相关阅读:
    【二】调通单机版的thrift-C++版本
    【一】调通单机版的thrift-python版本
    Spark在实际项目中分配更多资源
    Spark实际项目中调节并行度
    IDEA中大小写转换快捷键
    使用maven下载cdh版本的大数据jar包
    【Hive六】Hive调优小结
    【Hive五】Hive函数UDF
    【Hbase三】Java,python操作Hbase
    【Hive三】Hive理论
  • 原文地址:https://www.cnblogs.com/madgoat/p/498596.html
Copyright © 2020-2023  润新知