コード例 #1
0
        internal bool OracleBulkCopyInsert()
        {
            CheckGUIDAndDateTime(DalType.Oracle);
            string   conn    = DalCreate.FormatConn(DalType.Oracle, AppConfig.GetConn(_Conn));
            Assembly ass     = OracleDal.GetAssembly();
            object   sbc     = ass.CreateInstance("Oracle.DataAccess.Client.OracleBulkCopy", false, BindingFlags.CreateInstance, null, new object[] { conn }, null, null);
            Type     sbcType = sbc.GetType();

            try
            {
                sbcType.GetProperty("BatchSize").SetValue(sbc, 100000, null);
                sbcType.GetProperty("BulkCopyTimeout").SetValue(sbc, AppConfig.DB.CommandTimeout, null);
                sbcType.GetProperty("DestinationTableName").SetValue(sbc, SqlFormat.Keyword(mdt.TableName, DalType.Oracle), null);
                PropertyInfo cInfo     = sbcType.GetProperty("ColumnMappings");
                object       cObj      = cInfo.GetValue(sbc, null);
                MethodInfo   addMethod = cInfo.PropertyType.GetMethods()[4];
                foreach (MCellStruct column in mdt.Columns)
                {
                    addMethod.Invoke(cObj, new object[] { column.ColumnName, column.ColumnName });
                }

                sbcType.GetMethods()[4].Invoke(sbc, new object[] { mdt });

                return(true);
            }
            catch (Exception err)
            {
                if (err.InnerException != null)
                {
                    err = err.InnerException;
                }
                sourceTable.DynamicData = err;
                Log.WriteLogToTxt(err);
                return(false);
            }
            finally
            {
                sbcType.GetMethod("Dispose").Invoke(sbc, null);
            }
            //using (Oracle.DataAccess.Client.OracleBulkCopy sbc = new OracleBulkCopy(conn, OracleBulkCopyOptions.Default))
            //{
            //    sbc.BatchSize = 100000;
            //    sbc.DestinationTableName = mdt.TableName;
            //    foreach (MCellStruct column in mdt.Columns)
            //    {
            //        sbc.ColumnMappings.Add(column.ColumnName, column.ColumnName);
            //    }
            //    sbc.WriteToServer(mdt);
            //}
            //return true;
        }
コード例 #2
0
        internal bool MySqlBulkCopyInsert(bool keepID)
        {
            bool   fillGUID        = CheckGUIDAndDateTime(DalType.MySql);
            string conn            = DalCreate.FormatConn(DalType.MySql, AppConfig.GetConn(_Conn));
            bool   isNeedCreateDal = (_dalHelper == null);

            if (isNeedCreateDal)
            {
                _dalHelper = DalCreate.CreateDal(conn);
                _dalHelper.isAllowInterWriteLog = false;
            }
            string path = MDataTableToFile(mdt, fillGUID ? true : keepID);
            string sql  = string.Format(SqlCreate.MySqlBulkCopySql, path, SqlFormat.Keyword(mdt.TableName, DalType.MySql),
                                        AppConst.SplitChar, SqlCreate.GetColumnName(mdt.Columns, keepID, DalType.MySql));

            try
            {
                if (_dalHelper.ExeNonQuery(sql, false) != -2)
                {
                    return(true);
                }
            }
            catch (Exception err)
            {
                if (err.InnerException != null)
                {
                    err = err.InnerException;
                }
                sourceTable.DynamicData = err;
                Log.WriteLogToTxt(err);
            }
            finally
            {
                if (isNeedCreateDal)
                {
                    _dalHelper.Dispose();
                    _dalHelper = null;
                }
                // File.Delete(path);
            }
            return(false);
        }