R-将NA替换为NULL以输入PostgreSQL
我正在尝试将R-将NA替换为NULL以输入PostgreSQL,r,postgresql,R,Postgresql,我正在尝试将NA值替换为NULL。原因是,我需要将numeric值输入到PostgreSQL数据库中,并不断得到错误:error:numeric类型的输入语法无效“ 我尝试将值设置为NA、空字符串'、空字符串“NULL”(作为字符串)。这些都不起作用 df = data.frame(x=c('a', 'b', 'c', 'd', 'e'), y=c(1, 2, 3, NA, 5)) df[is.na(df)] = "NULL" df[is.na(df)] = "" 如果您的表使用的是numer
NA
值替换为NULL
。原因是,我需要将numeric
值输入到PostgreSQL数据库中,并不断得到错误:error:numeric类型的输入语法无效“
我尝试将值设置为NA
、空字符串'
、空字符串“NULL”
(作为字符串)。这些都不起作用
df = data.frame(x=c('a', 'b', 'c', 'd', 'e'), y=c(1, 2, 3, NA, 5))
df[is.na(df)] = "NULL"
df[is.na(df)] = ""
如果您的表使用的是
numeric
,则将NA
转换为NaN
应该可以<代码>数字,以及十进制
和浮点
支持NaN
(请参阅)
如果您的数据类型不同,例如integer
,您可以使用nullif
强制NaN
为NULL
:
nullif(y, 'NaN')
在存在其他非空元素的原子向量中,不能将
NULL
作为元素NULL
长度为零,因此从向量中删除,或者通过赋值触发错误。为什么NA不起作用?该列类仍然是数字类。您如何将dataframe导入数据库?使用RODBC?如果是这样的话,从数据帧创建表的操作会将NA处理为空。我只是在导出为csv
后手动导入。不过,我将尝试sqlSave()
方法。同样适用于布尔/逻辑,方法是先将逻辑转换为字符,y=as.character(mybool)
,然后在SQL:nullif(y,'NA')::boolean
用于NA或nullify(y')::boolean
用于空白/空(例如,未设置的输入)。