我有使用BCP从SQL Server中提取的数据,该文件是ASCII CSV 日期为2016-03-03T23:00:00格式。
运行提取物时我得到了
其他信息:
{" diagnosticCode":195887127"严重性":"错误""组分":" RUNTIME" "源":"用户"" ErrorID中":" E_RUNTIME_USER_EXTRACT_COLUMN_CONVERSION_INVALID_ERROR""消息":"无效 尝试转换列数据时的字符。"," description":" HEX: \" 223022 \"转换输入记录时字符无效。\ n位置: 第1行,第21列。","分辨率":"检查输入是否有错误或使用 \"无声\"切换到忽略中的over(under)-sized行 输入。\ n忽略\"无效\"行可能会影响工作 结果和类型必须可以为转换错误可以为空 忽略"" HELPLINK":"""细节":" ============ ================================================== ============================== \ nHex中:5432333B35313B34362D323031362E30332E30335432333B30303B30302D302D352D323031362E30332E30335432333B35313B34392F3536372D302D323031362E30332E3033 \ n ^ \ n文字:T23:51:46,2016-03-03T23:00:00,0,5,2016-03-03T23:51:49.567,0,2016-03-03 \ n
如何在提取时正确处理日期?我不清楚为什么它会在日期时间栏的中间分裂。
示例行看起来像
50CA2FBB-95C3-4216-A729-999BE2DB491A,2016-03-03T23:51:49.567,1001464881,1001464795,1001464795,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,100 ,100,,12643,bCAwvRnNVwrKDXKxZkVed2Z1zHY =,o2lsnhueDApmvSbm31mh3aetYnc =,2016-03-03T23:50:46,2016-03-03T23:00:00,2016-03-03T23:51:46,2016-03-03T23:00: 00,0,5,2016-03-03T23:51:49.567,0,2016-03-03T00:00:00,2016-03-03T23:59:59,00000000-0000-0000-0000-000000000000
Extract Statement is
@res =
EXTRACT
LicenseId Guid,
EntryDate DateTime,
UltimateId long,
SiteId string,
VirtualId string,
ProjectId Guid,
DocumentId Guid,
MasterId string,
ProductId string,
FeatureString string,
VersionId long,
ComputerSid string,
UserSid string,
AppStartTime DateTime,
StartHour DateTime,
AppStopTime DateTime,
StopHour DateTime,
GmtDelta int,
RecordedGmtDelta int,
LastUpdated DateTime,
Processed bool,
StartDate DateTime,
EndDate DateTime,
ImsId Guid
FROM @dataFile
USING Extractors.Csv();
答案 0 :(得分:0)
内置提取器的默认编码是Encoding.UTF-8。所以很有可能,你看到的三字节序列被解释为UTF-8而不是ASCII。
如果您的BCP输出实际上只包含ASCII范围(0-127)中的代码点(而不是ANSI 8位字符),则可以指定Extractors.Csv(encoding:Encoding.[ASCII])
(注意[]
周围ASCII
从保留关键字规则中转义它们。)
如果您的数据包含ANSI范围字符,则必须将BCP输出为UTF-16(我认为BCP不支持UTF-8),或将BCP的结果转换为UTF-8。
请注意,如果文件大于250MB,我们目前在上传文件(如果是UTF-16编码)时会出现记录边界检测错误。在我们修复此错误之前,我建议您在这种情况下使用UTF-8编码上传文件。
此外,如果您需要支持完整的ANSI代码页,请在https://feedback.azure.com/forums/327234-data-lake/suggestions/13077555-add-ansi-code-page-support-for-built-in-extractors投票支持用户语音项,并提供您需要支持的代码页(例如,Windows-1254或ISO-Latin -1)。