【问题标题】:Importing Datetime data into SQL Server Warehouse using BCP使用 BCP 将日期时间数据导入 SQL Server Warehouse
【发布时间】:2019-07-01 10:20:16
【问题描述】:

我每天都会收到一个如下所示的文本文件:

128CAFEE-38B0-5A6A-8C21-E2BDA1E57FE4    353386068937487 10320   2019-06-20T23:56:14Z
128CAFEE-38B0-5A6A-8C21-E2BDA1E57FE4    353386068937487 10320   2019-06-20T23:56:14Z
128CAFEE-38B0-5A6A-8C21-E2BDA1E57FE4    353386068937487 10320   2019-06-20T23:56:14Z

我正在尝试使用 BCP 将其导入 Azure SQL Server 仓库。

被加载的表的定义如下:

CREATE TABLE
 mytable
(var1 VARCHAR(36) NOT NULL, 
 var2 BIGINT NOT NULL, 
 var3 INTEGER NOT NULL, 
 var4 DATETIME2 NOT NULL)

我正在使用如下所示的 fmt 文件:

13.0
4
1       SQLCHAR             0       36      "\t"   1     var1                                         SQL_Latin1_General_CP1_CI_AS
2       SQLBIT              0       1       "\t"   2     var2                                         ""
3       SQLINT              0       4       "\t"   3     var3                                         ""
4       SQLDATETIME         0       8       "\n"   4     var4                                         ""

我的日期时间元素有问题 - 我收到以下错误:

Error = [Microsoft][ODBC Driver 13 for SQL Server]Invalid date format

有没有办法定义日期时间信息是什么,即我可以给 BCP 一个 YYYY-mm-DD\THH:MM:SS 样式字符串,以便它可以正确解释我的日期吗?

请限制使用 BCP 的答案。

【问题讨论】:

    标签: datetime datetime-format bcp azure-sql-data-warehouse


    【解决方案1】:

    您将无法使用 bcp 将该日期格式直接导入到 datetime2 列中(据我所知 - 很高兴得到纠正)。使用临时表,导入到char(20) 列,然后使用CAST 转换,例如

    SELECT CAST( yourCharDateColumn AS DATETIME2 ) AS x
    FROM yourStagingTable
    

    您可能会忘记使用这种方法的格式文件,只需将 -c 开关与 bcp 一起使用。演员在我的测试中很成功。

    我注意到格式文件中的第二列被标记为SQLBIT,而它应该是SQLBIGINT

    关于 bcp 的使用,我很想了解您为什么选择使用这个旧命令工具,其中推荐使用 Polybase 将数据快速导入 Azure SQL 数据仓库。 CREATE EXTERNAL FILE FORMAT 甚至有一个 DATE_FORMAT 开关,虽然我没有尝试过,但可以使用这种格式。如果您必须 bcp 并且源数据来自另一个 SQL Server,则使用本机 (-n) 导出开关效果很好,并且还不需要格式化文件。或者考虑数据工厂,它应该能够处理日期列所需的转换。

    【讨论】:

    • 演员选项有效,SQLBIT 是我的问题中的一个错字。 BCP 是 Microsoft 自己推荐的,这可能与我们在此处的特定设置有关,但看看 polybase,我认为这可能是更好的选择。
    猜你喜欢
    • 2016-10-29
    • 2020-04-06
    • 2012-09-20
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2019-02-21
    相关资源
    最近更新 更多