大数据量.csv文件导入SQLServer数据库

      前几天拿到了一个400多M的.csv文件,在电脑上打开要好长时间,打开后里面的数据都是乱码。因此,做了一个先转码再导入数据库的程序。100多万条的数据转码+导入在本地电脑上花了4分钟,感觉效率还可以。各位网友有更好的方法,请在留言中指点下,一起学习,多谢了。

 1 static void Main(string[] args)
 2         {
 3             int count = 0;
 4             string readerPath=@"C:\Users\Administrator\Desktop\readerDemo.csv";
 5             string writerPath=@"C:\Users\Administrator\Desktop\writeDemo.csv";
 6             if (File.Exists(writerPath))
 7             {
 8                 File.Delete(writerPath);
 9             }
10             using (StreamReader reader = new StreamReader(readerPath,Encoding.UTF8))
11             {
12                 while (!reader.EndOfStream)
13                 {
14                     string line = reader.ReadLine();
15                     using (StreamWriter writer = new StreamWriter(writerPath, true,Encoding.Default))
16                     {
17                         writer.WriteLine(line);
18                     }
19                     count++;
20                     Console.WriteLine("正在转码第{0}行,请稍等",count);
21                 }
22             }
23             Console.WriteLine("转码完成,共转码{0}条数据",count);
24             Console.WriteLine("开始导入数据,请稍等");
         //开始向数据库导入数据
25 string sql = "BULK INSERT Test.dbo.BagDataTable FROM 'C:\\Users\\Administrator\\Desktop\\writeDemo.csv' WITH(FIELDTERMINATOR=',',BATCHSIZE=100000,FIRSTROW=2)"; 26 try 27 { 28 DbHelper.ExecuteSql(sql);//使用的是方法ExecuteNonQuery()方法,具体的Helper就不上传了。 29 } 30 catch(Exception ex) 31 { 32 using (StreamWriter writerLog = new StreamWriter(@"C:\Users\Administrator\Desktop\Log.txt")) 33 { 34 writerLog.WriteLine(ex.ToString()); 35 } 36 } 37 Console.WriteLine("数据导入完毕"); 38 Console.ReadKey(); 39 } 40 }
Bulk Insert命令详细:
http://blog.csdn.net/jackmacro/article/details/5959321/
FIELDTERMINATOR表示csv文件中的结束符标志(csv默认列结束标志是,行结束标志是\r\n),具体使用参看:
http://www.cnblogs.com/sunice/p/6367332.html

 

转载于:https://www.cnblogs.com/sunice/p/6371663.html

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值