从.txt文件中读取数据并将其添加到我的数据库中

时间:2015-03-23 06:36:43

标签: c# sql sql-server visual-studio-2013 ssms

我已经做了一段时间的学校作业,我注意到我需要一些帮助来完成它。具体来说,我需要帮助将FlatFile.txt转换/导入到我的规范化数据库中。

我的flatfile有很多行,每行有很多属性用'|分隔”。

如何添加每一行并将该行中的每个元素添加到我的DataBase中的唯一对应属性(假设我已经建立了与我的数据库的连接)?

我知道我可能需要使用以下内容: 提示*:comm.Parameters.AddWithValue(“@ FirstName”,firstname); 如何使.txt文件的第一个元素等于firstname?

我希望这是有道理的。

这是我到目前为止所做的:

string [] lines = File.ReadAllLines(pathString);

string[][] myRecords = new string[lines.Count() + 1][];
int k = 1;

foreach (var line in lines)
{
    var values = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
    for (int i = 1; i < values.Length; i++)
    {
        if (myRecords[k] == null)
        {
            myRecords[k] = new string[values.Length + 1];
        }

        myRecords[k][i] = values[i];
        Console.WriteLine(myRecords[k][i]);
    }
    k++;

1 个答案:

答案 0 :(得分:0)

您应该能够将一行中的每个项目添加到数据库中的相应名称,方法是使用它在行中的位置;类似的东西:

comm.Parameters.AddWithValue("@FirstName", values[i]);

(注意:此处所需的确切语法将取决于您使用的内容,但我假设您能够将该部分计算出来。)

...但是,对于类似的工作,您将要更改解析该行的代码并删除StringSplitOptions.RemoveEmptyEntrie,因为这将影响每行的数据部分的结果数量。

一个例子:

var line  = "one|two|||five|six";

// Will produce: {one, two, five, six}
var nonEmptyValues = line.Split(new char[] { '|' }, 
                                StringSplitOptions.RemoveEmptyEntries);

// Will produce {one, two, null, null, five, six}
var allValues = line.Split(new char[] { '|' });

后者将允许生成的数组(代码中的values)始终包含正确数量的&#34;列&#34;,这将使位置到DB列名称的映射更容易。