Как прочитать первую строку и сохранить второй элемент в массив для вставки в таблицу SQL в C #

1

У меня есть текстовый файл csv, который пользователь просматривает.

Когда пользователь получает текстовый файл, первая строка должна быть прочитана, а второй элемент должен быть записан в Sql Table.

Текстовый файл большой, но первые две строки выглядят следующим образом:

students_head   201502  
student_id  code amount

И у меня есть таблица Sql со следующими столбцами:

student_id  code amount month

Что мне нужно сделать, так это получить месяц, который находится в первой строке текстового файла и заполнить его каждый месяц в столбцах для всех строк.

выглядеть так

student_id  code amount month
1234        mt11 1000   201502
1235        mt11 25000  201502
1236        ds33 7800   201502

Код, который у меня есть на данный момент, выглядит следующим образом:

openFileDialog1.Filter = ".csv file|*.csv*";
openFileDialog1.FilterIndex = 1;

DialogResult result = openFileDialog1.ShowDialog();

if (result == DialogResult.Yes)
{
    String file = openFileDialog1.FileName;
    btnNext.Enabled = true;

    try
    {
        string connect = "Data Source=BRIAN-PC\\SQLEXPRESS; Initial Catalog=PSAHoldings; user id =sa; Password=kagiso";

        string table = "IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='t_original' AND xtype='U')" +
            "CREATE TABLE t_original (" +
            "empId varChar(10) NOT NULL PRIMARY KEY," +
            "paycode varChar(10) NOT NULL," +
            "amount int NOT NULL," +
            "month int NOT NULL,"+
            ")";

        SqlConnection con = new SqlConnection(connect);
        con.Open();

        SqlCommand createTable = new SqlCommand(table, con);
        createTable.ExecuteNonQuery();


        String BulkInsert = "BULK INSERT t_original FROM_" +
            file + "_WITH (--FIRSTROW = 3," +
            "FIELDTERMINATOR = '|'," +
            "ROWTERMINATOR = '\\n')";

        SqlCommand bulkCmd = new SqlCommand(BulkInsert, con);
        bulkCmd.ExecuteNonQuery();

    }
    catch (SqlException ex)
    {
        MessageBox.Show(ex.ToString(), "Exception Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
  • 0
    Ну, вы используете BULK INSERT, пропуская первый ряд, поэтому у вас нет никакого контроля над этим. Насколько велик этот файл для такого подхода?
Теги:
arrays

1 ответ

0

Просто прочитайте это -

string month = string.empty;
using(var reader = new StreamReader(file))
{
    string firstLine = reader.ReadLine();
    string[] splitedLine = firstLine.Split(';'); // or whatever delimiter You used
    month = splittedLine[1];
}
  • 0
    А потом? Как вы положили это в команду BULK INSERT?
  • 0
    stackoverflow.com/questions/3544526/… <- например, так
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню