当前位置: 首页 > 知识库问答 >
问题:

RODBC sqlSave表创建问题

殳宸
2023-03-14
    null
> head(df)
                        colname
1                           564
2                          4336
3                         24810
4                         26206
5                         26433
6                         26553
> sqlSave(db3, df, table = "[Jason].[dbo].[df]", append = TRUE, rownames = FALSE)
Error in sqlSave(db3, df, table = "[Jason].[dbo].[df]",  : 
  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的Flick先生让我检查是否可以使用sqlQuery读取空表,事实上,我可以。

  1. 我创建了一个ODBC连接,它直接指向SQL Server中的数据库,而不是只指向默认(主)DB,然后在table=tableName=语句
  2. 中指定表的路径
  3. 在SQL Server Management Studio中创建表,如下所示

开始

在[PRIMARY]上创建表[dbo].[testing123]([Person_DIMKey][int]null)

>

  • 在R中,我在新的ODBC连接中使用了sqlupdate,表名周围没有括号

    现在sqlUpdate()可以看到该表,但是它抱怨需要一个唯一的列

    指示表中唯一的列是具有index=colname的唯一列,将导致表示该列不存在的错误

    开始

    创建表[dbo]。[jive_BNR_Person_DIMKey]([jive_BNR_Person_DIMKey][int]非空主键)在[PRIMARY]

    开始

      null

    此外,在我的文章中,这些步骤的编号为1到7,但是StackOverflow在列表显示时会多次重置列表的编号。如果有人能帮我清理这篇文章的这方面,我将不胜感激。


  • 共有1个答案

    淳于祺
    2023-03-14

    经过几个小时的工作,我终于能够让sqlSave工作,同时指定表名--深呼吸,从哪里开始。以下是我为实现这一目标所做的事情:

    • 打开32位ODBC Administrator,创建用户DSN,并为特定数据库配置它。在我的例子中,我正在创建一个全局临时表,所以我链接到tempdb。在odbcconnection(Name)中使用此连接名。以下是我的代码myconn2<-odbcConnect(“systemdb”).
    • 然后我用以下代码定义了数据类型:columntypes<-list(Record=“varchar(10)”,Case_Number=“varchar(15)”,Claim_Type=“varchar(15)”,Block_Date=“datetime”,Claim_Processed_Date=“datetime”,Status=“varchar(100)”).
    • 然后使用作为.character作为.date更新了数据帧类类型,以匹配上面列出的数据类型。
    • 我已经创建了这个表,因为我已经处理了几个小时,所以我不得不使用sqldrop(myconn2,“##r_claims_data”).
    • 删除该表
    • 然后运行:sqlsave(myconn2,MainClmDF2,tablename=“##R_Claims_Data”,verbose=true,rownames=FALSE,vartypes=columntypes)

    然后我的头掉下来了,因为它起作用了!我真的希望这能帮助别人前进。以下是帮助我走到这一步的链接:

    找不到表

    sqlSave在R中

    罗德BC

     类似资料:
    • 问题内容: 我在使用RODBC的sqlSave创建表时遇到了麻烦(或更准确地说,是将数据写入到创建的表中)。 这与现有的sqlSave问题/答案不同,因为 他们遇到的问题是不同的,我可以创建表,而他们不能, 我已经不成功地合并了他们的解决方案,例如在运行sqlSave之前关闭并重新打开连接, 错误消息是不同的,唯一的例外是帖子在以上两种方式中是不同的 我在Windows RDP上使用MS SQL

    • 我运行了以下查询: 然后得到一个带有时间戳数据类型的列: 我想用这个表输出创建一个新表。

    • 创建pet表(宠物表),包含列:宠物名字,拥有者,物种,性别,出生日期,死亡日期: mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); 一旦你创建了表,你可以查看刚刚创建的表是否是想创建的表:

    • Hbase运行不完美,我在尝试在Hbase上创建表时遇到问题,当然我无法访问上的Hbase状态UI。请帮助!! 以下是我的所有配置文件: (hadoop conf)core-site.xml:(主服务器和从服务器配置相同)

    • 在本章中,我们将讨论如何在项目中创建问题: 步骤(1): 登录到您的GitLab帐户并转到项目部分下的项目: 步骤(2): 转到问题选项卡并单击新问题按钮创建一个新问题,如下所示: 步骤(3): 现在,填写标题,说明等信息,如果需要,可以选择用户分配问题,里程碑(请参阅本章以获取更多信息),操作时标签或可由开发人员在创建之后自行选择。 步骤(4): 点击 Submit issue 按钮,您将看到一

    • 问题内容: 您可以给MS Access等同于MySQL“如果不存在则创建表…”吗? 更新 像这样 也将是合适的 问题答案: 对于SQL DDL代码,答案是否定的。ACE / Jet SQL没有任何流控制语法,并且ACE / Jet只能执行一个SQL语句。是的,没错:ACE / Jet不支持程序代码:(