sqlbulkcopy를 SQL 테이블에 연결하려고합니다. 내 데이터 테이블에있는 소스는 3 개의 열과 대상 테이블에 4 개의 열이 있고 첫 번째 열은 idendity 열입니다. 대상 테이블은 레코드가 데이터베이스에 삽입 될 때 값을 생성합니다. 다음 코드 줄에서 "주어진 ColumnMapping이 소스 또는 대상의 모든 열과 일치하지 않습니다."라는 메시지를 표시합니다. sqlBulkCopy.WriteToServer (dtExcelData); 나는 그 문제가 무엇인지 이해하지 못한다.Sql bulkcopy error - 주어진 ColumnMapping이 소스 또는 대상의 모든 열과 일치하지 않습니다.
이드 (INT) ACCOUNTNUMBER (VARCHAR 9) 금액 (소수점 11,2) Sedol (NVARCHAR 30)
XSSFWorkbook xssfwb;
using (FileStream file = new FileStream(excelPath, FileMode.Open, FileAccess.Read))
{
xssfwb = new XSSFWorkbook(file);
}
var sheet = xssfwb.GetSheetAt(0); // Change this to the worksheet you want to import.
var rows = sheet.GetRowEnumerator();
var dtExcelData = new DataTable();
var linenumber = 0;
DataRow dr;
dtExcelData.Columns.AddRange(new DataColumn[3] {
new DataColumn("AccountNumber", typeof(string)),
new DataColumn("Amount", typeof(decimal)),
new DataColumn("Sedol",typeof(string)) });
while (rows.MoveNext())
{
IRow row = (XSSFRow)rows.Current;
linenumber++;
row.GetCell(4).SetCellType(CellType.Numeric);
if (row.GetCell(0) != null)
{
dr = dtExcelData.NewRow();
dr["AccountNumber"] = row.GetCell(1).ToString();
//dr["Amount"] = decimal.Parse(row.GetCell(4).ToString());
dr["Amount"] = (decimal)row.GetCell(4).NumericCellValue;
dr["Sedol"] = row.GetCell(11).ToString();
dtExcelData.Rows.Add(dr);
}
}
DealingContext.ExecuteCommand("TRUNCATE TABLE [dbDealing].[MESSAGING].[Rebate]");
//Set the database table name
//using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(DealingContext.Connection.ConnectionString,SqlBulkCopyOptions.KeepIdentity))
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(DealingContext.Connection.ConnectionString))
{
sqlBulkCopy.DestinationTableName = "[dbDealing].[MESSAGING].[Rebate]";
//[OPTIONAL]: Map the Excel columns with that of the database table
sqlBulkCopy.ColumnMappings.Add("AccountNumber", "Owning Account ID");
sqlBulkCopy.ColumnMappings.Add("Amount", "Amount");
sqlBulkCopy.ColumnMappings.Add("Sedol", "Related Asset Identifier value");
sqlBulkCopy.WriteToServer(dtExcelData);
}
나는 또한이 오류가 있었고 내가 삽입 한 테이블의 일부 기본 제약 조건을 제거했을 때 사라졌습니다. 매우 이상합니다. – John