0

ExcelSheet を SQL サーバー データベースにインポートしています。問題は、データベース テーブルに 15 行あるのに、ExcelSheet に約 25 列あることです。Excel で余分な不要な行をスキップする必要があります。

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{                  
   bulkCopy.ColumnMappings.Add("PP NO", "passportnumber");
   bulkCopy.ColumnMappings.Add("COVER NO", "covernumber");
   bulkCopy.ColumnMappings.Add("NAME", "paxname");
   .....
}

私が得ているエラーは The given ColumnMapping does not match up with any column in the source or destination.

4

2 に答える 2

1

ColumnMappings は大文字と小文字が区別されます。ソース列名と宛先列名のスペルは同じではありません。テーブルにも同じ列名を確認して書き込む必要があります。

于 2012-11-07T10:11:04.890 に答える
0

これを試して、ステータスを教えてください

OdbcConnection connection;
SqlBulkCopy bulkCopy;
string ConnectionString = @"server=hostname\sqlexpress;database=pubs;uid=sa;pwd=1234;";
string connstr = @"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=c:\contact.xls";
using (connection = new OdbcConnection(connstr))
{

OdbcCommand command = new OdbcCommand("Select * FROM [Sheet1$]", connection);

//you can change [Sheet1$] with your sheet name
connection.Open();

// Create DbDataReader to Data Worksheet

using (OdbcDataReader dr = command.ExecuteReader())

{

// Bulk Copy to SQL Server



using (bulkCopy = new SqlBulkCopy(ConnectionString))
{

 // I have given column name "id" in the excel and "empId" sql table, 

 bulkCopy.ColumnMappings.Add("id","empId");
 bulkCopy.ColumnMappings.Add("name","name");

    OR
// You can give index directly
 bulkCopy.ColumnMappings.Add(0,0);
 bulkCopy.ColumnMappings.Add(1,1);

bulkCopy.DestinationTableName = "Names";
//"Names" is the sql table where you want to copy all data
bulkCopy.WriteToServer(dr);
}
dr.Close();
}
}

bulkCopy.Close();
于 2012-11-07T10:08:48.303 に答える