首页 > 解决方案 > c# - 给定的 ColumnName 'xxxxxxx' 与数据源中的任何列都不匹配

问题描述

在我的代码中有一个问题,但我看不出这是什么问题。列名是逐字相同的,它正在工作,如果我在 csv 文件中使用 1 列,但是当我尝试超过 2-3 列字段时,它会给出以下错误。我检查了很多文章,所以我无法修复错误。可能发生的是这条线。DB 已经使用类似的字段创建。

private void DBaktar()
    {


        string SQLServerConnectionString = "Server =.\\SQLEXPRESS; Database = Qiti; User Id = sa; Password = 7731231xx!!;";
        string CSVpath = @"D:\FTP\"; // CSV file Path
        string CSVFileConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};;Extended Properties=\"text;HDR=Yes;FMT=Delimited\";", CSVpath);

        var AllFiles = new DirectoryInfo(CSVpath).GetFiles("*.CSV");
        string File_Name = string.Empty;

        foreach (var file in AllFiles)
        {
            try
            {


                DataTable dt = new DataTable();

                using (OleDbConnection con = new OleDbConnection(CSVFileConnectionString))
                {
                    con.Open();
                    var csvQuery = string.Format("select * from [{0}]", file.Name);
                    using (OleDbDataAdapter da = new OleDbDataAdapter(csvQuery, con))
                    {
                        da.Fill(dt);
                    }
                }

                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SQLServerConnectionString))
                {
                    bulkCopy.ColumnMappings.Add("LKod", "LKod");
                    bulkCopy.ColumnMappings.Add("info", "info");
                    bulkCopy.ColumnMappings.Add("Codex", "Codex");
                    bulkCopy.ColumnMappings.Add("LthNo", "LthNo");
                    bulkCopy.ColumnMappings.Add("Datein", "Datein");


                    bulkCopy.DestinationTableName = "U_Tik";
                    bulkCopy.BatchSize = 0;
                    bulkCopy.EnableStreaming = true;

                    bulkCopy.WriteToServer(dt);
                    bulkCopy.Close();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }

错误异常;

给定的 ColumnName 'LKod' 与数据源中的任何列都不匹配。

例如堆栈跟踪;

在 System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServerCommon(Int32 columnCount) 在 System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServerAsync(Int32 columnCount, CancellationToken ctoken) 在 System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable table, DataRowState rowState) 在 System .Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable 表)

标签: sqlbulkcopy

解决方案


我找到了一个解决方案并且 100% 正确。下面的链接,我希望成为需要它的路径。

https://johnnycode.com/2013/08/19/using-c-sharp-sqlbulkcopy-to-import-csv-data-sql-server/


推荐阅读