首页 文章

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

提问于
浏览
1

我正在使用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

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

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

    • 目视检查和编辑文件以修复错误,或

    • 编写解析器程序,以便对数据期望有足够的了解,使其能够正确分析真正的分隔符."guess" .

  • 0

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

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

    然后为每个 lineParts 做任何你想做的事 . \t 是制表符 .

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

  • 0

    这很简单 .

    只需逐行阅读文件即可 . MSDN上的示例:

    How to: Read Text from a File

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

    String.Split Method (Char[], StringSplitOptions)

    然后工作插入您的数据 .

相关问题