【问题标题】:Losing decimal places when exporting to csv导出到 csv 时丢失小数位
【发布时间】:2015-07-23 02:41:57
【问题描述】:

我正在将 oracle 表中的数据导出到 csv 文件中。我有一列 varchar2 数据类型,它的值类似于 1.1 和 1.10。当我将这些导出到 csv 文件时,值 1.10 变为 1.1 并因此创建重复记录。有没有办法将值 1.10、1.1 都放入 csv 文件中而不会丢失“1.10”中的最后一个零。

谢谢

【问题讨论】:

  • 数字 1.1 与数字 1.10(或 1.100 或 1.1000)完全相同。您可以调用to_char 来生成具有不同数量的尾随0 的字符串,但您需要知道您想要多少个小数位。如果您真的在使用 float 并且该列是唯一的,则其中之一不能完全是您认为的值。
  • 好的。那么您如何将数据导出为 CSV 以及如何读取 CSV 数据?是否有可能任何应用程序(即 Excel)正在写入或读取数据认为该列是一个数字而不是一个字符串?
  • 我正在使用 sqldeveloper 和 pl/sql developer 并使用 excel 打开 csv 文件。理想情况下,它应该显示数字,因为它是一个 varchar。但这并没有发生。当我以 xls 格式导出它时,我得到了正确的结果。但不是 csv。 Bu 我希望文件为 csv 格式。
  • 如果您在文本编辑器中打开 CSV 文件,那里是 0 吗?默认情况下,如果您打开它,Excel 通常会将 CSV 文件中包含数字数据的列视为数字而不是文本。当您在 Excel 提供的向导中打开 CSV 文件时,您需要指定该列应被视为文本数据。
  • 在 notepad++ 中打开时可以看到正确的值。

标签: oracle csv oracle-sqldeveloper number-formatting export-to-csv


【解决方案1】:

当我将这些导出到 csv 文件时,值 1.10 变为 1.1,从而创建重复记录。

这与 Oracle 无关。这是您使用的工具显示问题。使用正确的单元格格式来显示所需的小数位

另外,1.11.10 是相同的。在小数点后的右侧附加 对值没有显着影响。

Excel 文本格式

  1. 右键单击单元格。
  2. 选择设置单元格格式
  3. 在第一个选项卡编号中,选择文本
  4. 点击确定

即使单元格中有数字,文本格式的单元格也会被视为文本。 单元格与输入的内容完全相同。

【讨论】:

  • 在数值上它们是相同的。但是我使用的列不是 varchar2 类型的数字。所以我也想要尾随的零。
  • 我已经尝试过了,但是没有用。当我从 sqldev 导出时,我看不到尾随零的值。正如您所说,将其更改为文本也不起作用。但它在导出到 excel 时工作正常。
  • 是的,我看到了。您输入了 1.1 和 1.10 并将类型更改为文本。我也这样做了,但它不起作用。当我从 oracle 导出为 csv 格式时,我没有看到 1.10 .1.1 我看到的是 1.1 两次。
  • @sandywho 您是否使用 to_char 导出为字符串?
  • 因为它是一个 varchar2 我认为没有必要。但我什至尝试过,但没有用。我使用的 select 语句同时显示 1.10 和 1.1 问题在于“导出到 csv”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2016-11-29
  • 2020-09-27
  • 2018-06-20
  • 2016-07-06
  • 1970-01-01
相关资源
最近更新 更多