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

 static void Main(string[] args)
{
int count = ;
string readerPath=@"C:\Users\Administrator\Desktop\readerDemo.csv";
string writerPath=@"C:\Users\Administrator\Desktop\writeDemo.csv";
if (File.Exists(writerPath))
{
File.Delete(writerPath);
}
using (StreamReader reader = new StreamReader(readerPath,Encoding.UTF8))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
using (StreamWriter writer = new StreamWriter(writerPath, true,Encoding.Default))
{
writer.WriteLine(line);
}
count++;
Console.WriteLine("正在转码第{0}行,请稍等",count);
}
}
Console.WriteLine("转码完成,共转码{0}条数据",count);
Console.WriteLine("开始导入数据,请稍等");
         //开始向数据库导入数据
string sql = "BULK INSERT Test.dbo.BagDataTable FROM 'C:\\Users\\Administrator\\Desktop\\writeDemo.csv' WITH(FIELDTERMINATOR=',',BATCHSIZE=100000,FIRSTROW=2)";
try
{
DbHelper.ExecuteSql(sql);//使用的是方法ExecuteNonQuery()方法,具体的Helper就不上传了。
}
catch(Exception ex)
{
using (StreamWriter writerLog = new StreamWriter(@"C:\Users\Administrator\Desktop\Log.txt"))
{
writerLog.WriteLine(ex.ToString());
}
}
Console.WriteLine("数据导入完毕");
Console.ReadKey();
}
}
Bulk Insert命令详细:
http://blog.csdn.net/jackmacro/article/details/5959321/
FIELDTERMINATOR表示csv文件中的结束符标志(csv默认列结束标志是,行结束标志是\r\n),具体使用参看:
http://www.cnblogs.com/sunice/p/6367332.html

大数据量.csv文件导入SQLServer数据库的更多相关文章

  1. MYSQL数据库导入大数据量sql文件失败的解决方案

    1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和 ...

  2. 将DBF文件导入Sqlserver数据库

    项目中的问题:用户选择N个dbf文件导入sql2005数据库,由于每年dbf表结构都在变化,所以在sql2005中根本就不存在,需要每年根据dbf的结构自动建表.(文章来自http://blog.cs ...

  3. 将TXT文件 导入 sqlserver数据库

    情景一:​ 数据库已存在旧表名 old_table,列名old_column_name. 将TXT文件导入数据库已存在旧表old_table中,导入过程中需注意 数据源中列名可全部不修改 或 全部修改 ...

  4. 使用OPENROWSET、Microsoft.ACE.OLEDB实现大数据量的高效导入

    首先说明使用的环境是:java和Sqlserver. 最近公司需要进行大数据量的导入操作.原来使用的是Apache POI,虽然可以实现功能,但是因为逻辑处理中需要进行许多校验,处理速度太慢,使用多线 ...

  5. 大数据量下的SQL Server数据库自身优化

    原文: http://www.d1net.com/bigdata/news/284983.html 1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情 ...

  6. POI3.8解决导出大数据量excel文件时内存溢出的问题

    POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用.SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入 ...

  7. CSV文件导入到数据库中读取数据详解(接着上个帖子)

    一.controller层 二.SERVICE层 @Overridepublic Result importJinjiangAssessResult(MultipartFile file) throw ...

  8. (转)大数据量下的SQL Server数据库优化

     在SQL Server中,默认MDF文件初始大小为5MB,自增为1MB,不限增长,LDF初始为1MB,增长为10%,限制文件增长到一定的数目:一般设计中,使用SQL自带的设计即可,但是大型数据库设计 ...

  9. 将csv文件导入sql数据库

    有一个csv文件需要导入到Sql数据库中,其格式为 “adb”,"dds","sdf" “adb”,"dds","sdf" ...

随机推荐

  1. 应用三:Vue之混入(mixin)与全局混入

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 首先介绍一下混入mixin的概念:   官方文档:混入提供了一种非常灵活的方式,来分发 Vu ...

  2. HTML 引入 CSS、JS 的三种方式

    描述部分按 CSS 来的,其实 JavaScript 也一样,具体区别看代码 外部样式表 当样式需要被应用到很多页面的时候,外部样式表将是理想的选择.使用外部样式表,你就可以通过更改一个文件来改变整个 ...

  3. Java中的强制转换

    特点: 1.需要程序员手动修改代码 2.语法:范围小的类型 变量名 = (范围小的类型)范围大的类型的数据 3.从范围小 到 范围大  注意: 强制类型转换可能会造成数据的丢失哦,小伙伴们在应用时一定 ...

  4. 企业级任务调度框架Quartz(6) 任务调度器(Scheduler)

    前序:      我们已经在前面的内容能里看到了,我们用 Scheduler 来管理我们的 Job:创建并关联触发器以使 Job 能被触发执行:以及如可选择 calendar 为给定的时程安排提供更多 ...

  5. Python——Day1(笔记代码)

    #print('Hello World')"""n1=input('请输入用户名:')print(n1)n2=input('请输入密码:')print(n2)" ...

  6. OSI层次介绍

    1.应用层:为应用软件提供接口,使应用程序能够使用网络服务. 2.表示层:①数据的解码和编码,②数据的加密和解密,③数据的压缩和解压缩. 3.会话层:建立.维护.管理应用程序之间的会话. 功能:对话控 ...

  7. 常见的dos命令(及抒写方式)

    1.dir:列出当前目录下的主体及文件夹. 2.md:创建目录. 3.rd:删除目录.{注意:rd不能删除非空的文件夹,并且只能用于文件夹的删除} 3.cd :进入指定目录. 4.cd . . :退出 ...

  8. 提高生产力:发送邮件API和Web服务(包含源码)

    在Web开发中,发邮件是一种非常常见的功能或任务. 发送邮件的6种方式 一文提到了6种方法,文章发表后,有网友指出了还有另外一种方法,Ant中也可以发送邮件. 打开Foxmail之类的邮件客户端或者在 ...

  9. CentOS中防火墙相关的命令(CentOS7中演示)

    CentOS中防火墙程序主要是firewall和iptables,CentOS7中firewall服务已经默认安装好了,而iptables服务需要自己用yum  install  iptabes-se ...

  10. XML基本语法

    本节要点: 了解XML的文档声明 了解XML的元素.命名规则.属性.元素内容.处理指令等概念 1   XML文档声明 表示该文档是一个XML文档,以及遵循哪个XML版本的规范. 规范:<?xml ...