如何在导入数据库期间合并两个 excel 列?

Posted

技术标签:

【中文标题】如何在导入数据库期间合并两个 excel 列?【英文标题】:How can I combine two excel columns during import to a database? 【发布时间】:2017-12-07 14:44:36 【问题描述】:

我正在尝试在 excel 中组合日期和时间列,并使用 sqlbulkcopy 将其映射到数据库中的一列。我收到一个错误:

日期][时间不匹配任何列映射

请参阅下面的示例代码。关于如何在不将其复制到数据表的情况下完成此操作的任何想法?

Dim sSourceConstr As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties=""Excel 12.0 Xml;HDR=YES;""", sPath)

Dim sDestConstr As String = ConfigurationManager.ConnectionStrings("SolCards").ConnectionString
Dim sSourceConnection As New OleDbConnection(sSourceConstr)
Using sSourceConnection
    Dim sql As String = String.Format("Select [Customer Cod],[Customer],[PAN],[Vehicle],[Date],[Station],[Driver],[Authorized],[Product]" &
                                          ", [Pump], [Tran No], [Odo], [Metric], [UPrice], [Qty], [Amount], [TimeFormat] FROM [0$]", "trans")
    Dim command As New OleDbCommand(sql, sSourceConnection)

    sSourceConnection.Open()
    Using dr As OleDbDataReader = command.ExecuteReader()
        Using bulkCopy As New SqlBulkCopy(sDestConstr)
            bulkCopy.DestinationTableName = "FuelInformation"
            'column mapping               

          bulkCopy.ColumnMappings.Add("[Date] [Time]", "DatePurchased")

            bulkCopy.WriteToServer(dr)
        End Using
    End Using
End Using

【问题讨论】:

Select [Customer Cod]+' '+[Customer] - 这是合并列 然后我收到此错误“提供程序无法确定日期时间值”@zackraiyan 是否有包含日期​​和时间的列?? 嘿等等! bulkCopy.ColumnMappings.Add("[Date] [Time]", "DatePurchased") ...这行不通。你需要声明 [date],[time] 与什么相关 看我的回答.. 【参考方案1】:

我解决这个问题的方法是使用 CONCATENATE 的 excel 实际公式。您可以将其放入您的代码中,也可以在电子表格中添加一个新列并调用该单元格的值。

【讨论】:

【参考方案2】:

错误的解决方法是:

 "Select ([date],[time])values(@date,@time)"
   bulkCopy.ColumnMappings.Add("@Date", "DatePurchased")
   bulkCopy.ColumnMappings.Add("@time", "DatePurchased")

【讨论】:

我收到此错误:查询表达式'([Date],[Time])values(@Date,@Time)'中的语法错误(缺少运算符)。 这是我的选择语句:“选择 [Customer Cod],[Customer],[PAN],[Vehicle],([Date],[Time])values(@Date,@Time) ,[站],[司机],[授权],[产品], [泵], [运输号], [Odo], [公制], [UPrice], [Qty], [Amount], [TimeFormat] FROM [0$]", "trans")【参考方案3】:

我通过如下使用 CStr() 使其工作,合并两列的问题是列标题名称以关键字为名称。

 Dim sSourceConstr As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;""", sPath)

    Dim sDestConstr As String = ConfigurationManager.ConnectionStrings("SolCards").ConnectionString
    Dim sSourceConnection As New OleDbConnection(sSourceConstr)
    Using sSourceConnection
        Dim sql As String = String.Format("SELECT CStr([Date]) + ' ' + CStr([Time]) as [DatePurchased] ,[Customer Cod],[Customer],[PAN],[Vehicle],[Station],[Driver],[Authorized],[Product], [Pump], [Tran No], [Odo], [Metric], [UPrice], [Qty], [Amount], [TimeFormat] FROM [0$]", "trans")
        Dim command As New OleDbCommand(sql, sSourceConnection)

        sSourceConnection.Open()
        Using dr As OleDbDataReader = command.ExecuteReader()
            Using bulkCopy As New SqlBulkCopy(sDestConstr)
                bulkCopy.DestinationTableName = "FuelInformation"
                'column mapping 
                bulkCopy.ColumnMappings.Add("[DatePurchased]", "DatePurchased")

                bulkCopy.WriteToServer(dr)
            End Using
        End Using

    End Using

【讨论】:

以上是关于如何在导入数据库期间合并两个 excel 列?的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个excel中的数据自动导入到另一个excel

python实例:导入会员数据后,读取数据文件,检查导入正确性(整列取excel值合并列response取值)

excel 两个表格如何匹配多个数据并合并

合并双语翻译文本也很简单

excel数据导入SQL SERVER 2000 时间列报错 导入失败

python将txt导入到excel