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" 在引号中不起作用。在我看来,你有三个选择:
修复生成原始文件的进程,将字段留空;这是 .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"
其他选项:
- 将数据加载到分段 table。在暂存 table 中将目标列设为字符串 /
VARCHAR
。首先将数据加载到那里并清理它/删除 "null" 字符串,然后再插入主 table.
- 如果您的目标/接收器 Azure SQL 数据库或普通 SQL 服务器(在 VM 或其他设备上)根据 [= 使用具有 table 值参数的存储过程任务18=].
我有一个 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" 在引号中不起作用。在我看来,你有三个选择:
修复生成原始文件的进程,将字段留空;这是 .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"
其他选项:
- 将数据加载到分段 table。在暂存 table 中将目标列设为字符串 /
VARCHAR
。首先将数据加载到那里并清理它/删除 "null" 字符串,然后再插入主 table. - 如果您的目标/接收器 Azure SQL 数据库或普通 SQL 服务器(在 VM 或其他设备上)根据 [= 使用具有 table 值参数的存储过程任务18=].