OracleBulkCopy的批量数据导入

  1        private void button1_Click(object sender, EventArgs e)

  2         {

  3             OpenFileDialog afd = new OpenFileDialog();

  4             if (afd.ShowDialog()!=System.Windows.Forms.DialogResult.OK)

  5             {

  6                 return;

  7             }

  8             string fileName = afd.FileName;

  9             if (Path.GetExtension(fileName)!=".csv")

 10             {

 11                 MessageBox.Show("文件名后缀必须是.csv");

 12                 return;

 13             }

 14             DataTable table = new DataTable();

 15             using(Stream stream=new FileStream(fileName,FileMode.Open,FileAccess.Read))

 16             using(StreamReader sr=new StreamReader(stream,Encoding.Default))

 17             {

 18                 string firstline = sr.ReadLine();

 19                 string line;

 20                 

 21                 

 22                 #region 把创建的列加入表的列集合中

 23                 //Id

 24                 DataColumn column = new DataColumn();

 25                 column.ColumnName = "Id";

 26                 column.DataType = System.Type.GetType("System.Int32");

 27                 table.Columns.Add(column);

 28                 //MobileNumber

 29                 column = new DataColumn();

 30                 column.ColumnName = "MobileNumber";

 31                 column.DataType = System.Type.GetType("System.String");

 32                 column.MaxLength = 10;

 33                 table.Columns.Add(column);

 34                 //MobileArea

 35                 column = new DataColumn();

 36                 column.ColumnName = "MobileArea";

 37                 column.DataType = System.Type.GetType("System.String");

 38                 column.MaxLength = 30;

 39                 table.Columns.Add(column);

 40                 //MobileType

 41                 column = new DataColumn();

 42                 column.ColumnName = "MobileType";

 43                 column.DataType = System.Type.GetType("System.String");

 44                 column.MaxLength = 20;

 45                 table.Columns.Add(column);

 46                 //AreaCode

 47                 column = new DataColumn();

 48                 column.ColumnName = "AreaCode";

 49                 column.DataType = System.Type.GetType("System.String");

 50                 column.MaxLength = 10;

 51                 table.Columns.Add(column);

 52                 //PostCode

 53                 column = new DataColumn();

 54                 column.ColumnName = "PostCode";

 55                 column.DataType = System.Type.GetType("System.String");

 56                 column.MaxLength = 8;

 57                 table.Columns.Add(column); 

 58                 #endregion

 59                 

 60                 while ((line = sr.ReadLine())!=null)

 61                 {

 62                     string[] mobileMsg = line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

 63                     int Id = Convert.ToInt32(mobileMsg[0]);

 64                     string MobileNumber = mobileMsg[1].Trim('"');

 65                     string MobileArea = mobileMsg[2].Trim('"');

 66                     string MobileType = mobileMsg[3].Trim('"');

 67                     string AreaCode = mobileMsg[4].Trim('"');

 68                     string PostCode = mobileMsg[5].Trim('"');

 69                     //创建行,把行加入表的行集合中

 70                     DataRow row = table.NewRow();

 71                     row["Id"] = Id;

 72                     row["MobileNumber"] = MobileNumber;

 73                     row["MobileArea"] = MobileArea;

 74                     row["MobileType"] = MobileType;

 75                     row["AreaCode"] = AreaCode;

 76                     row["PostCode"] = PostCode;

 77                     table.Rows.Add(row);

 78                 }

 79             }

 80 

 81             int i = table.Rows.Count;

 82             Stopwatch sw = new Stopwatch();

 83             sw.Start();

 84             using (OracleBulkCopy bulkCopy = new OracleBulkCopy(OracleHelper.CreateConnection()))

 85                 {

 86                     bulkCopy.DestinationTableName = "T_MOBILE";

 87                     foreach (DataColumn column in table.Columns)

 88                     {

 89                         bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName);//源列名->目标列名

 90                     }

 91                     try //如果发生异常就回滚

 92                     {

 93                         bulkCopy.WriteToServer(table);//把table表写入数据库表中

 94                        // tx.Commit();

 95                     }

 96                     catch (Exception ex)

 97                     {

 98                       //  tx.Rollback();

 99                         throw new Exception(ex.Message);

100                     }

101                 }

102                 sw.Stop();

103                 MessageBox.Show("耗时:" + sw.ElapsedMilliseconds + "");

104            // }

105         }

 

你可能感兴趣的:(oracle)