Я заполняю таблицу значениями в excel, используя sql bulk copy в c #.
DataTable dt = new DataTable();
string line = null;
int i = 0;
using (StreamReader sr = File.OpenText(@"c:\temp\table1.csv"))
{
while ((line = sr.ReadLine()) != null)
{
string[] data = line.Split(',');
if (data.Length > 0)
{
if (i == 0)
{
foreach (var item in data)
{
dt.Columns.Add(new DataColumn());
}
i++;
}
DataRow row = dt.NewRow();
row.ItemArray = data;
dt.Rows.Add(row);
}
}
}
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConsoleApplication3.Properties.Settings.daasConnectionString"].ConnectionString))
{
cn.Open();
using (SqlBulkCopy copy = new SqlBulkCopy(cn))
{
copy.ColumnMappings.Add(0, 0);
copy.ColumnMappings.Add(1, 1);
copy.ColumnMappings.Add(2, 2);
copy.ColumnMappings.Add(3, 3);
copy.ColumnMappings.Add(4, 4);
copy.DestinationTableName = "Censis";
copy.WriteToServer(dt);
}
}
В приведенном выше коде я вставляю записи из excel в таблицу. Но у меня есть еще один столбец «ProcessID» в таблице Censis. Для каждого прогона времени мне нужно сгенерировать GUID и заполнить этот столбец этим.
Может ли кто-нибудь помочь мне заполнить столбец ProcessID, когда я делаю массовую копию, как указано выше, с помощью сгенерированного GUID для всех строк для этого запуска?
Когда вы делаете свою вставку в базу данных, используйте функцию newsequentialid