Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用数字数据类型复制到_sql()_Python_Sql_Sql Server_Database_Pandas - Fatal编程技术网

Python 使用数字数据类型复制到_sql()

Python 使用数字数据类型复制到_sql(),python,sql,sql-server,database,pandas,Python,Sql,Sql Server,Database,Pandas,我通过读取一个文件并进行一些预处理加载了一个Pandas数据帧,预处理有几列数字。比如 value 1 13654654328.4567895 2 NULL 3 54643215587.6875455 为了不丢失准确性,我计划将其作为数字存储在SQL Server中。因为我不想将数据转换成float,所以我将其作为字符串加载,然后使用df.to_sql()插入到sql中 如果不存在空值,则工作正常。但是,如果它包含null,无论我将“”或np.n

我通过读取一个文件并进行一些预处理加载了一个Pandas数据帧,预处理有几列数字。比如

            value
1     13654654328.4567895
2     NULL
3     54643215587.6875455
为了不丢失准确性,我计划将其作为数字存储在SQL Server中。因为我不想将数据转换成float,所以我将其作为字符串加载,然后使用df.to_sql()插入到sql中

如果不存在空值,则工作正常。但是,如果它包含null,无论我将“”或np.nan作为null,它都会将错误报告为“将数据类型nvarchar转换为数值时出错”。似乎它会自动将其转换为空字符串,而在SQL Server中无法转换为数值


我有什么办法可以处理这个问题吗。希望能用Python完成所有工作,不需要进一步的SQL脚本。

我从来没有使用过.to_SQL方法,但我认为您需要将空值替换为无值。例如:

df.replace([np.nan], [None], inplace=True)
顺便说一句,np.nan是浮点型。在SQL中,NULL是“nothing”类型,在Python中与之等价的是None。
而且“”和“NULL”将被视为字符串。

我想我应该添加更多细节来补充下面的答案

依照

SQL空值由输入和输出上的Python None单例表示

出现此问题是因为您试图将混合类型发送到db。您需要用
None

工具书类

简单地将
NULL
值更新为
0
而不是
,是否会导致任何问题?如果没有,那么我会这样做,然后你将能够导入他们没有问题。然后还可以将
0
值更新为
NULL
,因为原始数据中已经存在0,在这种情况下,0不同于NULL。设置“标志”可能不安全,因为原始数据可以是任何数字。当您使用带有数字类型的_sql()时,pandas应该能够处理nan和null。是否可能在数据帧中存储“NULL”str?这可以解释错误信息。你说的“NULL”是什么意思?那么,你的另一个选择是用实际数据中不会出现的内容替换
NULL
的实例。也许
-1
会起作用。