CSV 文件分析与导入数据库
2008-08-28 14:56
211 查看
CSV 文件分析与导入数据库
1 [/b]简介[/b][/b]
CSV全称 Comma Separated
values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。
1.1 [/b]规则[/b][/b]
l 开头是不留空,以行为单位。
l 可含或不含列名,含列名则居文件第一行。
l 一行数据不垮行,无空行。
l 以半角符号[,]作分隔符,列为空也要表达其存在。
l 列内容如存在[,],则用双引号[””]将该字段内容包含起来。
l 列内容如存在[”],双引号[””]将该字段内容包含起来,并且在内容中用两个双引号表示一双引号[””]。
l 文件读写时引号,逗号操作规则互逆。
l 内码格式不限,可为ASCII、Unicode或者其他。
1.2 [/b]扩展[/b][/b]
现在根据业务需求,将CSV文件数据导入数据库。
业务规则对CSV文件扩展如下。
l 文件开头可以使用符号 # 做为行注释。
l 文件必须包含列名定义,并且下一行为列的类型定义。
l 列内容如存在[换行],则用双引号[””]将该字段内容包含起来,换行符保留,使本记录跨行。
l 允许空行,程序或略。
2 [/b]程序设计[/b][/b]
主要目标:读取CSV文件,导入数据库中指定的表。
该组件主要由3个类组成:
2.1 [/b]CSV[/b]文件读取流程[/b]
[/b][/b]
2.2 [/b]导入数据库流程[/b]
[/b][/b]
2.3 [/b]CsvRow
[/b]类[/b][/b]
类图如下:
该类是分析CSV文件的核心类,负责分析文件结构与提取每一行数据,转换为指定的类型。
在构造函数中,要求传入一个等待读取数据的文本流和头结构定义。通过ReadRow()函数,提取每一行数据。
[/b]
[/b]
2.4 [/b]CsvDataReader[/b]类[/b][/b]
类图如下:
该类实现了IDataReader接口,提供一个向前只读的流访问CSV文件数据。
根据微软建议:用户并不直接创建 DataReader[/b] 类的实例,而是通过使用Command[/b]对象的 ExecuteReader 方法获取 DataReader 实例。因此,将 DataReader 构造函数标记为内部构造函数。这里,我们通过CsvDataReader. ExecuteReader ()方法,创建该对象实例。
ExecuteReader ()方法接受文件路径或文本流参数,并在构造期间,分析CSV文件头,存入属性Head中。通过IDataReader接口的Read(),GetValue(),Close()等方法进行数据访问。
2.5 [/b]Importer[/b]类[/b][/b]
类图如下:
该类负责将CSV数据导入数据。
根据用户提供的导入模式UseTableStruct,将CSV文件与数据库表进行不同规则的比较,并且使用SqlBulkCopy做为大容量数据导入工具。同时也限制了只能导入SQL数据库。
用户可以将设置UseStruct属性设置为UseTableStruct. RebuildStruct,实现直接由CSV创建表,也可以更新原有表结构(删除重建)。
3 [/b]事例[/b][/b]
3.1 [/b]使用[/b] CsvDataReader[/b]
3.2 [/b]使用[/b] Importer[/b]
下载http://download.csdn.net/source/592332http://download.csdn.net/greenery注意:样例代码使用了VS2008的部分特性
1 [/b]简介[/b][/b]
CSV全称 Comma Separated
values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。
1.1 [/b]规则[/b][/b]
l 开头是不留空,以行为单位。
l 可含或不含列名,含列名则居文件第一行。
l 一行数据不垮行,无空行。
l 以半角符号[,]作分隔符,列为空也要表达其存在。
l 列内容如存在[,],则用双引号[””]将该字段内容包含起来。
l 列内容如存在[”],双引号[””]将该字段内容包含起来,并且在内容中用两个双引号表示一双引号[””]。
l 文件读写时引号,逗号操作规则互逆。
l 内码格式不限,可为ASCII、Unicode或者其他。
1.2 [/b]扩展[/b][/b]
现在根据业务需求,将CSV文件数据导入数据库。
业务规则对CSV文件扩展如下。
l 文件开头可以使用符号 # 做为行注释。
l 文件必须包含列名定义,并且下一行为列的类型定义。
l 列内容如存在[换行],则用双引号[””]将该字段内容包含起来,换行符保留,使本记录跨行。
l 允许空行,程序或略。
2 [/b]程序设计[/b][/b]
主要目标:读取CSV文件,导入数据库中指定的表。
该组件主要由3个类组成:
2.1 [/b]CSV[/b]文件读取流程[/b]
[/b][/b]
2.2 [/b]导入数据库流程[/b]
[/b][/b]
2.3 [/b]CsvRow
[/b]类[/b][/b]
类图如下:
该类是分析CSV文件的核心类,负责分析文件结构与提取每一行数据,转换为指定的类型。
在构造函数中,要求传入一个等待读取数据的文本流和头结构定义。通过ReadRow()函数,提取每一行数据。
[/b]
[/b]
2.4 [/b]CsvDataReader[/b]类[/b][/b]
类图如下:
该类实现了IDataReader接口,提供一个向前只读的流访问CSV文件数据。
根据微软建议:用户并不直接创建 DataReader[/b] 类的实例,而是通过使用Command[/b]对象的 ExecuteReader 方法获取 DataReader 实例。因此,将 DataReader 构造函数标记为内部构造函数。这里,我们通过CsvDataReader. ExecuteReader ()方法,创建该对象实例。
ExecuteReader ()方法接受文件路径或文本流参数,并在构造期间,分析CSV文件头,存入属性Head中。通过IDataReader接口的Read(),GetValue(),Close()等方法进行数据访问。
2.5 [/b]Importer[/b]类[/b][/b]
类图如下:
该类负责将CSV数据导入数据。
根据用户提供的导入模式UseTableStruct,将CSV文件与数据库表进行不同规则的比较,并且使用SqlBulkCopy做为大容量数据导入工具。同时也限制了只能导入SQL数据库。
用户可以将设置UseStruct属性设置为UseTableStruct. RebuildStruct,实现直接由CSV创建表,也可以更新原有表结构(删除重建)。
3 [/b]事例[/b][/b]
3.1 [/b]使用[/b] CsvDataReader[/b]
private static void ExectureReadCsvFile(string p_filepath) { using (CsvDataReader actual = CsvDataReader.ExecuteReader(p_filepath, System.Text.ASCIIEncoding.Default)) { for (int i = 0; i < actual.FieldCount; i++) { Trace.Write(actual.GetName(i)); Trace.Write("/t"); } Trace.Write("/r/n"); while (actual.Read()) { for (int i = 0; i < actual.FieldCount; i++) { Trace.Write(actual.GetString(i)); Trace.Write("/t"); } Trace.Write("/r/n"); } } } |
Importer importer = new Importer("item.csv", "item_table", "key"); importer.Import(); |
相关文章推荐
- CSV 文件分析与导入数据库
- excel文件的多个sheet表合并成一个csv文件并导入数据库
- 将CSV文件导入到hive数据库
- CSV文件导入数据库的三种方法
- 大文件Excel,csv等快速导入数据库
- 导入CSV文件到数据库
- 数据库导入/导出csv格式的数据文件+添加新的字段
- PLSQL导入csv文件到数据库
- 将Csv文件数据导入到数据库表中
- 数据库学习纪要(二十二):MySQL创建数据库、表,及导入CSV文件数据2
- 第四步 使用shell操作数据库,导入分析并将结果导出成txt文件
- 将数据从CSV文件导入PG数据库
- CSV文件导入到SQL Server 2005数据库中
- 用脚本将excel,csv等文件导入数据库
- H2 数据库导入CSV文件实现原理简析
- 将csv文件导入到数据库中
- php 将csv文件内容导入数据库时值为空的解决
- 导入csv文件到数据库
- 在rails 4 中 使用 CSV 组件来 把csv文件导入到数据库
- PHP程序,将csv转成sql文件并导入数据库