获得;将数据类型VARCHAR转换为DATETIM时出错;E通过Polybase将数据从Azure blob复制到Azure DW时
我是Azure环境的新手,在尝试将Azure blob存储上CSV文件中的数据复制到Azure data warehouse中的表中时,我正在使用data factory,该存储有三列(id、年龄、出生日期)。出生日期的格式为“MM/dd/yyyy”,我正在使用polybase将数据从blob复制到azure DW中的我的表中。表的列定义为(int、int、datetime) 如果我在data factory中使用“大容量插入”选项,我可以复制数据,但当我选择Polybase副本时,它会给我一个错误。同样,在pipleine中更改dateformat也没有任何好处。 如果我将文件中的日期格式更改为“yyyy/MM/dd”,则Polybase复制成功获得;将数据类型VARCHAR转换为DATETIM时出错;E通过Polybase将数据从Azure blob复制到Azure DW时,azure,azure-data-factory,polybase,Azure,Azure Data Factory,Polybase,我是Azure环境的新手,在尝试将Azure blob存储上CSV文件中的数据复制到Azure data warehouse中的表中时,我正在使用data factory,该存储有三列(id、年龄、出生日期)。出生日期的格式为“MM/dd/yyyy”,我正在使用polybase将数据从blob复制到azure DW中的我的表中。表的列定义为(int、int、datetime) 如果我在data factory中使用“大容量插入”选项,我可以复制数据,但当我选择Polybase副本时,它会给我一个
是否有一种方法可以将数据从blob复制到表中,而不必将源文件中的日期格式更改为“yyyy/MM/dd”。我假设您已经创建了一个外部文件格式,并在外部表中引用该格式
CREATE EXTERNAL FILEFORMAT
有一个定义日期表示方式的选项:date\u FORMAT
,您可以将其设置为源数据表示日期时间的方式
比如说:
CREATE EXTERNAL FILE FORMAT your-format
WITH
(
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = '|',
DATE_FORMAT = 'MM/dd/yyyy' )
);
您可以在以下网址找到更多信息:此错误似乎已解决。我给出的日期格式是“MM/dd/yyyy”,而数据工厂希望它只是MM/dd/yyyy,没有任何引号 因此,根据我的理解,我将总结我在使用“MM/dd/yyy”日期格式将数据从Azure blob复制到Azure SQL data Warehouse时学到的知识,这里有几点: 1) 如果您使用azure portal使用数据工厂复制选项将数据从blob复制到azure sql数据仓库
- 使用数据工厂创建复制数据管线
- 指定输入数据源和目标数据存储
- 在“字段映射”下,在包含 日期,单击其右侧的小图标以显示自定义日期 格式字段,并输入不带引号的日期格式,例如。 与我的情况相同,年月日
- 运行pipleline,它应该会成功完成
- 正在创建外部数据源,该数据源指定 在我的案例中,blob存储上的输入文件,例如csv文件
- 一种外部文件格式,用于指定分隔符和自定义日期格式,例如,文件中的MM/dd/yyyy 输入文件李>
- 定义源中所有列的外部表 文件,并使用您需要的外部数据存储和文件格式 定义见上文
- 然后,您可以使用外部 表(CTAS)。尼尔斯在上面的回答中提到的东西。我用了 用于此过程的Microsoft SQL Server Management Studio