problema
Quando o arquivo .csv para importar dados em um quantidades da tabela de banco de dados, porque a tabela contém um auto-incremento, de modo que o arquivo CSV que você não adicionar esta coluna, por isso, quando a falha de inserção de importação encontrou problemas. (Na verdade, não há problema, o programa está sendo dado errado, envolver-se em vão por um longo tempo TAT)
soluções
Primeiro, defina o mapa
DataTable myDataTable = ioec.getDataTable(filePath, fileName);
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(conn);
sqlBulkCopy.DestinationTableName = mydataTable.TableName;
for (int i = 0; i < dt.Columns.Count; i++)
{
sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
sqlBulkCopy.WriteToServer(myDataTable);
Parâmetros myDataTable
não precisa adicionar um auto-incremento, que dados é que os dados de CSV de exportação
parte da chave é:
for (int i = 0; i < dt.Columns.Count; i++)
{
sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
Este pedaço de código, os nomes das colunas e nomes de coluna na tabela de destino fontes de dados precisam corresponder
Em segundo lugar, um novo parâmetro DataTable, está vazio
Além disso, um em cada tabela de dados, os dados está vazia, a localização é a primeira coluna, porque o tempo de enchimento será ignorado na primeira coluna, para que você não precisa de um mapa, mas a coluna tabela de dados ordem deve ser a mesma ordem das colunas da tabela de banco de dados! ! Caso contrário, será erro
Em terceiro lugar, adicionar uma tabela de dados de parâmetro, os dados não está vazio
No Canadá uma consulta tabela de tabela de dados, e em seguida, o banco de dados atualmente o último incremento o valor do id, definir a colunaAutoIncrement、AutoIncrementSeed
DataTable myDataTable = new DataTable("mkexams");
DataColumn newDataColumn = myDataTable.Columns.Add("id", Type.GetType("System.Int64"));
newDataColumn.AutoIncrement = true; //设置这一列自增
newDataColumn.AllowDBNull = false;
List<mkexams> mk = dbContext.mkexams.ToList();
long id = mk.Last().id + 1; //查出最后自增ID是多少
newDataColumn.AutoIncrementSeed = id; //启始值
newDataColumn.AutoIncrementStep = 1; //每次增长数
Que myDataTable
esta coluna um valor de auto-incremento só precisa ser definido null
para. Por exemplo:
myDataTable.Rows.Add(null, "第一行第二列数据", "第一行第三列数据");