您的位置:首页 > 数据库 > Oracle

oracle的批量插入

2016-02-17 09:37 477 查看
OrcBulkCopy bulkcopy = new OrcBulkCopy();

                DataTable dt = new DataTable();

                dt.Columns.Add("DECRYPT_TEL", typeof(string));

                dt.Columns.Add("TEL", typeof(string));

                dt.Columns.Add("ID", typeof(int));

                for (int i = 0; i < DECRYPT_TEL.Length; i++)

                {

                    DataRow DR = dt.NewRow();

                    DR["DECRYPT_TEL"] = DECRYPT_TEL[i];

                    DR["TEL"] = TEL[i];

                    DR["ID"] = ID[i];

                    dt.Rows.Add(DR);

                }
                bulkcopy.BulkToDB(dt, "R_TEL");

      public static string ModuleName = "module";

       public static string connOrcleString = System.Configuration.ConfigurationSettings.AppSettings["connstr_" + ModuleName];

        #region 批量插入数据

        /// <summary>

        /// 批量插入数据

        /// </summary>

        /// <param name="dt">要插入的数据</param>

        /// <param name="targetTable">数据库中的表</param>

        public void BulkToDB(DataTable dt, string targetTable)

        {

            OracleConnection conn = new OracleConnection(connOrcleString);

            OracleBulkCopy bulkCopy = new OracleBulkCopy(connOrcleString, OracleBulkCopyOptions.UseInternalTransaction);   //用其它源的数据有效批量加载Oracle表中

            //conn.BeginTransaction();

            //OracleBulkCopy bulkCopy = new OracleBulkCopy(connOrcleString, OracleBulkCopyOptions.Default);

            bulkCopy.BatchSize = 100000;

            bulkCopy.BulkCopyTimeout = 260;

            bulkCopy.DestinationTableName = targetTable;    //服务器上目标表的名称

            bulkCopy.BatchSize = dt.Rows.Count;   //每一批次中的行数

            try

            {

                conn.Open();

                if (dt != null && dt.Rows.Count != 0)

                    bulkCopy.WriteToServer(dt);   //将提供的数据源中的所有行复制到目标表中

            }

            catch (Exception ex)

            {

                throw ex;

            }

            finally

            {

                conn.Close();

                if (bulkCopy != null)

                    bulkCopy.Close();

            }

        }

        #endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: