Azure 数据工厂 - 无法从 "null" 转换为日期时间字段

Azure Data Factory - can't convert from "null" to datetime field

我有一个 Azure 数据工厂管道,它定义了从 CSV 文件到 SQL 服务器数据库表的数据导入。一些表具有可为空的日期时间字段,CSV 文件将空值提供为 "null"(即在引号内)。但是,当我 运行 管道时,出现了几个无法将 'null' 转换为日期时间的错误。

我查看了 Azure 文档,其中指出您可以定义空值在 CSV 文件中的显示方式。目前,我有以下配置:

"type": "AzureBlob",
"linkedServiceName": "AzureStorageLinkedService",
"typeProperties": {
  "folderPath": "processingtransactions/",
  "format": {
    "type": "TextFormat",
    "columnDelimiter": ",",
    "quoteChar": "\"",
    "nullValue":  "null",
    "firstRowAsHeader": true
  }
},

但是,我仍然收到错误消息:

"Message=Column 'DateOfBirth' contains an invalid value 'null'. Cannot convert 'null' to type 'DateTime'.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=The string was not recognized as a valid DateTime."

我还尝试将配置更改为: "NullValue":"null" 和 "nullValue": "NULL"

但我仍然遇到同样的错误。我设法导入数据的唯一方法是用“”(空字符串)替换 CSV 文件中的所有 "null" 值,但这并不理想。

有谁知道我需要什么语法才能让导入接受 "null" 字符串?

不幸的是,

"null" 在引号中不起作用。在我看来,你有三个选择:

  1. 修复生成原始文件的进程,将字段留空;这是 .csvs 的正常情况:

    1,"29 February 2016",,,
    2,,,,
    

    否则,如果将 nullValue 属性 设置为 null,则使用值 null(不在引号中)也有效,例如

    "format": {
        "type": "TextFormat",
        "columnDelimiter": ",",
        "nullValue": "null",
        "quoteChar": "\""
    }
    

这个文件可以工作:

1,"29 February 2016"
2,null

此文件将不起作用:

1,"29 February 2016"
2,"null"

其他选项:

  1. 将数据加载到分段 table。在暂存 table 中将目标列设为字符串 / VARCHAR。首先将数据加载到那里并清理它/删除 "null" 字符串,然后再插入主 table.
  2. 如果您的目标/接收器 Azure SQL 数据库或普通 SQL 服务器(在 VM 或其他设备上)根据 [= 使用具有 table 值参数的存储过程任务18=].