2013-09-26 3 views
0

Я хочу добавить данные из файла CSV в столбец таблицы в SQL Server. Мой код работает, но данные не доходят до столбца.Добавить данные из CSV в столбец таблицы SQL Server

private void btCode_Click(object sender, RoutedEventArgs e) 
{ 
     //string constring = "Data Source=.;Initial Catalog=*******;Integrated Security=True"; 
     string filepath = "C:\\code.csv"; 
     StreamReader sr = new StreamReader(filepath); 
     string line = sr.ReadLine(); 
     string[] value = line.Split(','); 
     DataTable dt = new DataTable(); 
     DataRow row; 

     foreach (string Code in value) 
     { 
      dt.Columns.Add(new DataColumn(Code)); 
     } 

в то время как:

while (!sr.EndOfStream) 
{ 
      value = sr.ReadLine().Split(','); 
      if(value.Length == dt.Columns.Count) 
      { 
       row = dt.NewRow(); 
       row.ItemArray = value; 
       dt.Rows.Add(row); 
      } 
} 

SqlBulkCopy bc = new SqlBulkCopy(sc.ConnectionString, SqlBulkCopyOptions.TableLock); 
bc.DestinationTableName = "CodesTable"; 
bc.BatchSize = dt.Rows.Count; 
sc.Open(); 
bc.WriteToServer(dt); 
bc.Close(); 
sc.Close(); 
+0

Сколько строк в вашем файле? Я полагаю, вы определили, что массовая копия, если не удается? (Вы прочитали свой файл, и ваша таблица данных в порядке?) – bhs

+0

2 строки в файле csv. – user2631662

+0

Если у вас есть> = 2 строки в csv-файле, почему вы вызываете sr.ReadLine() только один раз в btCode_Click? –

ответ

0

Y Dont вы попробуете с чтением CSV непосредственно с помощью OleDbConnection, а затем загрузить его в DataTable, используя OleDbDataAdapter.

Во-вторых, вы можете добавить блок catch catch, чтобы увидеть, если его бросает какое-то исключение.

Смежные вопросы