【发布时间】:2019-02-16 11:01:34
【问题描述】:
我通过从文件中读取数据并进行一些预处理来加载 Pandas DataFrame - 其中包含几列数字。比如
value
1 13654654328.4567895
2 NULL
3 54643215587.6875455
为了不丢失准确性,我计划将它作为 NUMERIC 存储在 SQL Server 中。由于我不希望 Pandas 将我的数据转换为浮点数,因此我将其加载为字符串,然后使用 df.to_sql() 插入 SQL。
如果不存在 NULL,它工作正常。但是,如果它包含null,无论我将“”或np.nan作为null,它都会报告错误为“将数据类型nvarchar转换为数字时出错”。似乎它会自动将其转换为无法在 SQL Server 中转换为 NUMERIC 的空字符串。
有什么办法可以解决这个问题。希望一切都在 Python 中完成,并且不需要更多的 SQL 脚本。
【问题讨论】:
-
是否会因为简单地将
NULL值更新为0而不是""而导致任何问题?如果没有,那么我会这样做,然后您就可以毫无问题地导入它们。然后,您还可以将0值更新为NULL -
因为原始数据中已经存在0,在这种情况下0与null不同。设置“标志”可能不安全,因为原始数据可以是任意数字。
-
当你使用数字类型的 to_sql() 时,pandas 应该能够同时处理 nan 和 null 。您是否可以在数据框中存储“NULL”str?这将解释错误消息。
-
'NULL' str 是什么意思
-
您的另一个选择是将
NULL的实例替换为实际数据中不会出现的内容。也许-1会起作用。
标签: python sql sql-server database pandas