如何使用c#读取不变的csv文件

时间:2012-06-14 16:19:37

标签: asp.net sql-server csv

我正在使用c#开发Windows应用程序开发。我想从目录中读取一个csv文件并导入到sql server数据库表中。如果文件内容是统一的,我已成功读取并将csv文件数据导入数据库表。但是我无法以不变形式插入文件数据ex.Actually我的csv文件分隔符是tab('\ t')并且在获取单个字段后我有一个包含dcc等数据的字段

Name
----
xxx
xxx yyy
xx yy zz 

我感到像xxx,yyy和xx,yy,zz这样的数据,所以插入就成了问题。 我怎样才能将数据统一插入到数据库表中。

3 个答案:

答案 0 :(得分:0)

这很简单。

只需逐行阅读文件。 MSDN上的示例:

How to: Read Text from a File

对于每一行,使用String.Split方法,将制表符作为分隔符。方法文档和示例如下:

String.Split Method (Char[], StringSplitOptions)

然后插入您的数据。

答案 1 :(得分:0)

如果CSV(或TSV)值中包含分隔符,则它应该用引号括起来。有关详细信息,请参阅规范:http://tools.ietf.org/html/rfc4180#page-3

因此您的输入文件格式不正确。如果您可以说服输入提供程序解决此问题,那么这将是解决问题的最佳方法。如果没有,其他解决方案可能包括:

  • 目视检查和编辑文件以修复错误,或
  • 编写您的解析器程序,以充分了解您的数据期望,以便能够正确“猜测”真实分隔符的位置。

答案 2 :(得分:0)

如果我正确理解你,问题是你的代码在空格而不是标签上分裂。鉴于您已阅读文件中的行,您只需要:

string[] fileLines;//from the file
foreach(string line in fileLines)
{
    string[] lineParts=line.Split(new char[]{'\t'});
}

然后对每个lineParts执行任何操作。 \t是制表符。

如果您还要求将行写入数据库文件...您可以使用Import Export Wizard读取制表符分隔的文件(假设您使用的是Sql Server Mgmt Studio,但是我'我确定有类似的方法可以使用其他数据库管理软件导入。)