当前位置: 首页 > 知识库问答 >
问题:

将数据从Azure Database ricks插入到AzureSQL数据库时,双精度值变为指数值

从景曜
2023-03-14

我正在尝试通过jdbc将数据从 Azure 数据砖加载到 Azure SQL 数据库表中。数据加载正常,但插入 SQL 表时 Azure 数据砖中的双精度值将转换为指数值。我在SQL数据库中尝试了不同的数据类型,例如纳瓦尔查尔,瓦尔查尔,浮点数,并将其转换为指数值。

然而,当我尝试在Azure SQL数据库中使用decimal数据类型时,它将数据加载到没有指数值的列中,但在最后给了我额外的零。

我在Databricks中使用的命令是:

%scala

spark.sql("select ID from customers")
     .write
     .mode(SaveMode.Append) // <--- Append to the existing table
     .jdbc(jdbcUrl,stg.customers, connecthtml" target="_blank">ionProperties)

存储在Azure Dataricks ID列中的一些示例有:

在 Azure SQL 数据库中使用数字 (38,15) 数据类型时,它为我提供以下输出:

|ID|
|:--|
|1900845009567889.1200000000000000|
|2134012183812321.0000000000000000|

最后我不想要额外的零。此外,Database ricks表中的数据没有正确定义,因此我不能说数字(38,15)是否足够。

我还尝试将Azure Databricks ID列中的数据存储为String数据类型,然后尝试将其加载到SQL表中的varchar或nvarchar数据类型中。但是,它仍然将数据转换成指数值。

有人能建议是否有任何简单的方法将这些数据从Azure数据库加载到AzureSQL数据库吗?

共有1个答案

吕宸
2023-03-14

我不能说数字(38,15)是否足够。

在SQL Server 2016之前,数字的转换仅限于17位数字的精度。

现在,此版本的SQL Server 2016(13.x)之后没有任何限制。

通用示例:

下面是Microsoft文档中的一个简化示例,该示例说明了数值数据类型如何插入到相应列中。

CREATE  TABLE dbo.Table ( DecimalColumn DECIMAL(5,2) ,NumericColumn NUMERIC(10,5) ); 

GO 

INSERT  INTO dbo.Table VALUES (123, 12345.12); GO SELECT DecimalColumn, NumericColumn FROM dbo.Table;

以上SQL查询结果:

我不希望最后多加零。

在SQLServer中,我们可以使用浮点数数据类型从末尾排除额外的零,即(比例)。

为此,我们必须将其转换为浮点型,以便仅显示目的。

SELECT CAST(12345.1200000 as float)

输出:

12345.12

参考上述内容,排除多余的零。

 类似资料:
  • 本文向大家介绍Android 将数据插入数据库,包括了Android 将数据插入数据库的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我正在尝试将JTable中的多行数据保存到数据库中,这是我的代码供参考: 问题是,它仅将一行数据插入数据库。有人可以帮帮我吗?:( 谢谢! 问题答案: 从循环中删除以下行代码并将其放置在循环之前 示例: 用以下代码替换您的代码 然后运行它认为它起作用。 对于批量插入示例,请参见https://my.vertica.com/docs/5.0/HTML/Master/14878.htm

  • 我忙于一项学校作业,我有一个由三个表组成的基本access数据库。Book、Reader和BookRated,其中as BookRated是交集表,主键userName来自Reader和ISBN来自Book组成BookRated的复合主键(作为外键)。 我正试图将信息插入书签表中,但出现以下错误

  • 事情是这样的 我不知道发生了什么,如果有人能帮忙,我会非常感激的。THX!

  • 问题内容: 我正在尝试使用angularjs从前端向mysql db插入数据。 但是,即使没有错误消息,它也不会插入数据库 。以下是我使用的代码。 index.html script.js View1.html 以下是我的php文件 insert.php 我知道我在这里做一些愚蠢的事情。我今天才刚刚开始学习angularjs。当我尝试将纯HTML的php代码插入db时,它的工作原理非常完美。希望有

  • 问题内容: 谁能告诉我在Swift中如何将双精度值四舍五入到小数点后位数x? 我有: 以秒为单位的NSTimeInterval(double)。 会给我时间,但是会给我这么长的精确时间,例如1.543240952039 … 打印时如何将其四舍五入为1.543 ? 问题答案: 您可以使用Swift的功能来完成此操作。 要以3位数精度四舍五入,首先将其乘以1000,四舍五入,然后将四舍五入的结果除以1