加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

RODBC sqlSave表建设题目

发布时间:2021-01-12 22:13:15 所属栏目:编程 来源:网络整理
导读:我在行使RODBC的sqlSave建设表时碰着了贫困(可能更精确地说,是将数据写入建设的表). 这与现有的sqlSave题目/谜底差异 他们碰着的题目是差异的,我可以建设表,而他们不能和 我已经无法归并他们的办理方案,譬喻在运行sqlSave之前封锁并从头打开毗连, 错误动静不

我在行使RODBC的sqlSave建设表时碰着了贫困(可能更精确地说,是将数据写入建设的表).

这与现有的sqlSave题目/谜底差异

>他们碰着的题目是差异的,我可以建设表,而他们不能和
>我已经无法归并他们的办理方案,譬喻在运行sqlSave之前封锁并从头打开毗连,
>错误动静差异,独一的破例是上述两种方法差异的帖子

我在Windows RDP上行使MS SQL Server 2008和64位R.

我有一个简朴的数据框,只有1列满3个,4个或5个数字的整数.

> head(df)
                        colname
1                           564
2                          4336
3                         24810
4                         26206
5                         26433
6                         26553

当我实行行使sqlSave时,没稀有据写入表.另外,错误动静使得它听起来像无法建设表,尽量显露实上建设了0行.

按照我发明的提议,我在运行sqlSave之前实行封锁并从头打开RODBC毗连.纵然我行使append = TRUE,我也实行在执行此操纵之前删除表,但它不会影响任何内容.

> sqlSave(db3,df,table = "[Jason].[dbo].[df]",append = TRUE,rownames = FALSE)
Error in sqlSave(db3,: 
  42S01 2714 [Microsoft][ODBC SQL Server Driver][SQL Server]There is already 
an object named 'df' in the database.
[RODBC] ERROR: Could not SQLExecDirect 'CREATE TABLE [Jason].[dbo].[df]  
("df" int)'

一旦建设了表,我也实行在表上行使sqlUpdate().假如我在R或SQL Server Management Studio中建设它并不重要,我会在通道上找不到错误表

最后,请留意我在没有append = TRUE和建设新表时,以及行使和不行使rownames选项时都实行过此操纵.

来自Freenode #R的Mr.Flick让我搜查一下我是否可以行使sqlQuery读取空表,究竟上,我可以.

更新

我已经通过以下步调越发靠近了:

>我建设了一个ODBC毗连,它直接进入SQL Server中的数据库,而不是仅仅到默认(主)DB,然后在table =或tablename = statements中指定表的路径
>在SQL Server Management Studio中建设表,如下所示

CREATE TABLE [dbo].[testing123](
[Person_DIMKey] [int] NULL
)[首要]

>在R中,我行使sqlUpdate和我的新ODBC毗连,而且在表名周围没有括号
>此刻sqlUpdate()看到了表,但它诉苦它必要一个独一的列
>指示表中独一的列是index = colname的独一列会导致错误,表白该列不存在
>我删除并从头建设指定主键的表,

CREATE TABLE [dbo].[jive_BNR_Person_DIMKey](
[jive_BNR_Person_DIMKey] [int] NOT NULL PRIMARY KEY
)[首要]

它天生了一个名为PK__jive_BNR__2754EC2E30F848ED的主键和索引(按照SQL Sever Management Studio的GUI界面)

>我将此索引/键指定为sqlUpdate()中的独一列但我收到以下错误:

sqlUpdate中的错误(db4,jive_BNR_Person_DIMKey,tablename =“jive_BNR_Person_DIMKey”,:
索引列PK__jive_BNR__2754EC2E30F848ED不在数据库表中

为了记录,我为索引指定了正确的列名(而不是“colname”);感激MrFlick要求澄清.

另外,这些步调在我的帖子中编号为1到7,但StackOverflow在表现时重置列表的编号屡次.假若有人能帮我整理这篇文章的这一方面,我会很谢谢.

办理要领

从头阅读RODBC vingette后,这是一个有用的简朴办理方案:
sqlDrop(db,"df",errors = FALSE)
sqlSave(db,df)

完成.

在颠末几天的尝试之后,好像题目源于行使附加选项,出格是table =可能,等同于tablename =.这些应该是有用的选项,但不知何以,他们想法导致我的特定版本的RStudio((Windows,64位,桌面版,当前版本),R(Windows,v3)和/或MS SQL Server 2008的题目.

假如表从未存在过,sqlSave(db,df)也可以在没有sqlDrop(db,“df”)的环境下事变,但作为最佳实践,我正在编写try(sqlDrop(db,“df”,errors = FALSE),无声在我的代码中的全部sqlSave语句之前= TRUE).

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读