我正在尝试根据数据帧(Source_DataFrame1)中的数据附加一个SQL表(Target_SqlTable)。
Source_DataFrame1大约有30列,其中很少有包含大量自由文本数据的自由文本列。
在SQL Db端,这些列被定义为文本
当我尝试使用
sqlSave(myconn,Source_DataFrame1,"Target_SqlTable",append=TRUE, rownames=FALSE, colnames = FALSE, safer=FALSE, verbose = TRUE)
要使用R中的Source_DataFrame1中的此数据更新Target_SqlTable,请不要执行以下操作。
这会失败,因为这些列的类型是text,而不是默认的varchar。那么,如何通过指定自定义列类型来更新SQL中的表呢?
为了便于示例,让我们假设我有10列的dataframe,列2、4、6的类型为Text。所以问题是,当我从R更新SQL表时,如何指定这些列的类型为Text?朋友们,任何帮助都是非常感谢的。
发布于 2015-10-22 09:45:29
sqlSave
有一个名为typeInfo
的选项,您可以在其中声明如何转换R
数据类型。typeInfo
采用列表形式,如下所示:
colspec <- list(character="mediumtext", double="double",
integer="integer", logical="varchar(5)")
在本例中,mediumtext
是MySQL
中使用的数据类型。
您还没有提到您使用的是哪种风格的SQL,因此以上只是一个示例。
然后,您可以将此列表声明为要在sqlSave
中使用的数据类型
sqlSave(myconn,Source_DataFrame1,"Target_SqlTable",append=TRUE,
rownames=FALSE, colnames = FALSE, safer=FALSE,
verbose = TRUE, typeInfo=colspec)
有关更多详细信息,请参阅https://cran.r-project.org/web/packages/RODBC/RODBC.pdf。
https://stackoverflow.com/questions/33273769
复制相似问题