2015-03-23 2 views
0

Я некоторое время работаю над школьным заданием, и я заметил, что мне нужна небольшая помощь в его завершении. В частности, мне нужна помощь в преобразовании/импортировании FlatFile.txt в мою нормализованную базу данных.Чтение данных в формате .txt и добавление его в мою базу данных

В моем файле flatfile много строк, и в каждой строке есть много атрибутов, разделенных символом '| ».

Как я могу добавить каждую строку и передать каждому элементу строки свои уникальные соответствующие атрибуты в моей базе данных (если у меня уже установлено мое соединение с моей базой данных)?

Я знаю, что мне может понадобиться что-то вроде: hint *: comm.Parameters.AddWithValue ("@ FirstName", firstname); Как сделать первый элемент .txt-файла равным первому?

Я надеюсь, что это имело смысл.

Вот то, что я до сих пор:

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++; 
+0

Ваш код хорошо выглядит, теперь добавьте SQL-часть. Вы должны принять фиксированную взаимосвязь между полями в файле .txt и столбцами в вашей базе данных. – DrKoch

+0

Должен ли я писать в базу данных внутри Foreach или делать это отдельно? – user3648947

+0

внутри петли – DrKoch

ответ

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 в коде) всегда содержит правильное число «столбцов», которая должна сделать отображение с позиций к БД имен столбцов легче.

+0

Я попробую это! – user3648947