C # problema quando o SqlBulkCopy copiar os dados para uma tabela que contém desde adicional

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 myDataTablenã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 myDataTableesta coluna um valor de auto-incremento só precisa ser definido nullpara. Por exemplo:

myDataTable.Rows.Add(null, "第一行第二列数据", "第一行第三列数据");
Publicado 48 artigos originais · ganhou elogios 56 · vê 20000 +

Acho que você gosta

Origin blog.csdn.net/zhetmdoubeizhanyong/article/details/104142581
Recomendado
Clasificación