mysql批量导入
作者:佚名 发表时间:2020-07-29 14:21:26
   public static int BulkInsert(DataTable table)
        {
            int insertCount = 0;
            try
            {
                if (string.IsNullOrEmpty(table.TableName)) throw new Exception("请给DataTable的TableName属性附上表名称");

                if (table.Rows.Count == 0) return 0;
                string tmpPath = Directory.GetCurrentDirectory() + "\\UpTemp";
                if (!Directory.Exists(tmpPath))
                    Directory.CreateDirectory(tmpPath);
                tmpPath = Path.Combine(tmpPath, "Temp.csv");//csv文件临时目录

                string csv = SystemExtensions.DataTableToCsv(table);
                File.WriteAllText(tmpPath, csv);

                var columns = table.Columns.Cast<DataColumn>().Select(_columns => _columns.ColumnName).ToList();

                using (MySqlConnection conn = new MySqlConnection(connection))
                {
                    try
                    {
                        MySqlBulkLoader bulk = new MySqlBulkLoader(conn)
                        {
                            FieldTerminator = ",",
                            FieldQuotationCharacter = '"',
                            EscapeCharacter = '"',
                            LineTerminator = "\r\n",
                            FileName = tmpPath,
                            NumberOfLinesToSkip = 0,
                            TableName = table.TableName,

                        };
                        bulk.Columns.AddRange(columns);//根据标题列对应插入
                        insertCount = bulk.Load();
                    }
                    catch (MySqlException ex)
                    {
                        throw ex;
                    }
                }
                File.Delete(tmpPath);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return insertCount;
        }