我正在尝试将Dataframe保存到azure synapse表中,出现以下错误:
com.microsoft.sqlserver.jdbc.sqlserverexception:107096;从bcp客户端收到的列长度对于colid无效。。。
问题在于我的Dataframe中的timestamp列如下所示: 2011-01-27T06:48:04.000+0000
. 然而synapse中的目标列是datatime2类型,maxlenght8。
我已经试过了
.withColumn("myTimestampColumn", to_timestamp(col("myTimestampColumn"), "yyyy-MM-dd HH:mm:ss"))
但形式不会改变。
有人知道怎么避开这个吗?
注意以下几点:
synapse只接受dataframe列为timestamp的事务,目标列为datetime2
我正在使用spark 2.4.5
1条答案
按热度按时间pftdvrlh1#
如果spark中的datetime列具有标准格式(如
2011-01-27T06:48:04.000+0000
),您可以直接转换为时间戳,这将产生一种格式yyyy-MM-dd HH:mm:ss
.那你就可以省钱了
df2
到你的table上去。