1

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

Name
----
xxx
xxx yyy
xx yy zz 

我检索了 xxx,yyy 和 xx,yy,zz 之类的数据,因此插入成为问题。我怎样才能将数据统一插入数据库表中。

4

3 回答 3

0

如果 CSV(或 TSV)值在其中包含分隔符,则应将其括在引号中。有关详细信息,请参阅规范:https ://www.rfc-editor.org/rfc/rfc4180#page-3

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

  • 目视检查和编辑文件以修复错误,或
  • 编写您的解析器程序以充分了解您的数据期望,以便它可以正确“猜测”真正的分隔符在哪里。
于 2012-06-14T18:05:34.720 回答
0

如果我对您的理解正确,那么问题是您的代码在空格而不是制表符上拆分。鉴于您已阅读文件中的行,您需要做的就是:

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

然后对每个lineParts. 是\t制表符。

如果您还询问将行写入数据库文件...您可以使用导入导出向导读取制表符分隔的文件(假设您使用的是 Sql Server Mgmt Studio,但我确信有可比性使用其他数据库管理软件导入的方法)。

于 2013-10-10T02:28:10.440 回答
0

这很容易。

只需逐行读取文件。这里的 MSDN 示例:

如何:从文件中读取文本

对于每一行,使用 String.Split 方法和您的选项卡作为分隔符。方法文档和示例在这里:

String.Split 方法 (Char[], StringSplitOptions)

然后工作插入您的数据。

于 2012-06-14T16:41:39.330 回答