bcp批量复制数据到数据库中

原创 2012年03月28日 09:10:19

1.Bcp批拷贝效率高,几百万数据小意思。完全没有什么压力。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace SqlBulkCopyDemo
{
    public partial class Test : System.Web.UI.Page
    {
        public string SQLCONN = System.Configuration.ConfigurationManager.AppSettings["SQLCONN"].ToString();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CreateXML();
                //SqlBulkCopy();
            }
        }

        #region //创建XML文件
        public void CreateXML()
        {
            using (SqlConnection conn = new SqlConnection(SQLCONN))
            {
                SqlDataAdapter da = new SqlDataAdapter("Select * from Student with(nolock)", conn);
                DataSet ds = new DataSet();
                da.Fill(ds);
                ds.WriteXml(Server.MapPath(@"XMLS\Student.xml"));
            }
        }
        #endregion

        #region //SqlBulkCopy批量导入数据
        public void SqlBulkCopy()
        {
            DataSet ds = new DataSet();
            DataTable sourceData = new DataTable();
            ds.ReadXml(Server.MapPath(@"XMLS\Student.xml"));
            sourceData = ds.Tables[0];
            using (SqlConnection conn = new SqlConnection(SQLCONN))
            {
                conn.Open();
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SQLCONN))
                {
                    bulkCopy.ColumnMappings.Add("StudName", "StudName");
                    bulkCopy.ColumnMappings.Add("Sex", "Sex");
                    bulkCopy.ColumnMappings.Add("Age", "Age");
                    bulkCopy.ColumnMappings.Add("Birthday", "Birthday");
                    bulkCopy.ColumnMappings.Add("Tel", "Tel");
                    bulkCopy.ColumnMappings.Add("Email", "Email");
                    bulkCopy.ColumnMappings.Add("Address", "Address");
                    bulkCopy.ColumnMappings.Add("AddTime", "AddTime");
                    bulkCopy.DestinationTableName = "Student";
                    bulkCopy.WriteToServer(sourceData);
                }
            }
        }
        #endregion

        #region //SqlBulkCopy批量导入数据(事务)
        public void TransactionSqlBulkCopy()
        {
            DataSet ds = new DataSet();
            DataTable sourceData = new DataTable();
            ds.ReadXml(Server.MapPath(@"XMLS\Student.xml"));
            sourceData = ds.Tables[0];
            using (SqlConnection conn = new SqlConnection(SQLCONN))
            {
                conn.Open();
                SqlTransaction Transaction=conn.BeginTransaction();//开启事务
                using (SqlBulkCopy BulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default,Transaction))
                {
                    try
                    {
                        BulkCopy.ColumnMappings.Add("StudName", "StudName");
                        BulkCopy.ColumnMappings.Add("Sex", "Sex");
                        BulkCopy.ColumnMappings.Add("Age", "Age");
                        BulkCopy.ColumnMappings.Add("Birthday", "Birthday");
                        BulkCopy.ColumnMappings.Add("Tel", "Tel");
                        BulkCopy.ColumnMappings.Add("Email", "Email");
                        BulkCopy.ColumnMappings.Add("Address", "Address");
                        BulkCopy.ColumnMappings.Add("AddTime", "AddTime");
                        BulkCopy.DestinationTableName = "Student";
                        BulkCopy.WriteToServer(sourceData);
                        BulkCopy.ColumnMappings.Clear();
                        Transaction.Commit();//事务提交
                    }
                    catch
                    {
                        Transaction.Rollback();//事务回滚
                    }
                    finally
                    {
                        Transaction.Dispose();//事务释放
                    }
                }
            }
        }
        #endregion
    }
}

相关文章推荐

BCP 命令实现SQLServer数据批量转换(转载)

sql server的BCP导入导出 bcp命令是SQL Server提供的一个快捷的数据导入导出工具。使用它不需要启动任何图形管理工具就能以高效的方式导入导出数据。bcp是SQL Server中负...

bcp导入导出sybase数据库的数据

bcp命令导入导出数据: 打开cmd命令行窗口,输入bcp,回车,然后系统给出的命令规范: 例子: 从sybase数据库里的RSH_RESULT数据库里面导出数据到f盘: 由于有很多条...

数据库数据如何批量复制

  • 2011年06月02日 09:09
  • 231KB
  • 下载

使用SqlBulkCopy类批量复制数据到数据库表中

在不同数据源之间转移数据是一个常见的开发任务。如果你应用过SQL Server,就会熟悉bcp(批量复制)命令。它允许你快速将大型文件批量复制到SQL Server表或视图中。在.NET Framew...

批量生成bcp命令

批量生成bcp命令 特别说明一下,这个批量生成bcp命令是有一些条件限制的:需要导出数据的表的名称是要有规律的,表的名称是需要连续、不间断的,表名最好是以数字来递增的,不过也可以是字母的。 ...
  • wwp1026
  • wwp1026
  • 2011年10月24日 23:09
  • 329

学习总结:sybase中bcp命令批量导出和导入

1.编辑一个文件selectout.sql: set nocount on use databasename go select 'bcp databasename..' + na...

SQL Server根据表或视图批量生成插入语句并BCP导出成文本

--声明变量 DECLARE @TableName VARCHAR(100),@RunStr VARCHAR(MAX),@RunRC VARCHAR(MAX),@FinalRun VARCHAR(M...

sybase数据库 bcp问题总结

  • 2016年07月06日 17:06
  • 29KB
  • 下载

BCP命令导入导出数据

  • 2013年11月13日 00:03
  • 19KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bcp批量复制数据到数据库中
举报原因:
原因补充:

(最多只允许输入30个字)