问题标签 [rodbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
461 浏览

excel - 使用 RODBC 将公式写入 Excel 文件

我可以使用包将数据框写入 excel 文件RODBC

现在我想包括一些公式,例如=A1,在打开 excel 文件时被解释为这样;在数据框中包含“=A1”作为文本会在 Excel 文件中生成字符串条目“=A1”(公式栏中显示的值为'=A1),并且不会被解释为公式。

0 投票
1 回答
125 浏览

r - 使用 RODBC 时检索 MS Access 文件名

输入我的连接名称,我会看到类似DBQ=Path\to\DB. 如何检索此值?我试过了

  • conn$DBQ
  • conn[DBQ]
  • conn['DBQ']
  • conn[,'DBQ']

无返回值。我试过typeof(conn)"integer"class(conn)-> "RODBC"mode(conn)-> "numeric"

0 投票
0 回答
713 浏览

r - Access 中的 RODBC 数据导入错误

我正在尝试将在访问数据库上执行的查询结果导入 R。我可以使用 RODBC 包建立连接并且能够检索记录,因此与数据库的连接不是问题。问题是当我将两列读入 R 时,它们是不准确的。

access 中的查询从表中读取数据,然后根据我执行的计算生成两个附加列。我导入了 18 列,其中 16 列直接来自表,另外两列是计算列。当我在访问中执行此查询时,一切都很好。access 中的两个计算列的结果(许多 IIF 语句的结果),我将其称为 V1 和 V2,运行查询后在 access 中的结果如下所示:

V1 采用三个值(A、B、C),V2 包含浮点数,范围从大约 -.35 到 1.5。

这些值正是我想要的,所以我知道当我在 access 中运行查询时它是有效的。

我想在 R 中获得这些相同的值,所以我运行生成上述结果的相同查询,如下所示:

同样,与数据库的连接不是问题。在我尝试从 R 运行此查询后,两个计算列(V1 和 V2)的结果与我在 access 中运行查询时的结果不匹配。其他列是直接从表中读取而没有任何计算的,它们应该是这样的。在 R V1 和 V2 中运行查询后,如下所示:

对于 V1,每个值现在都相同 (A)。对于 V2,一些值被正确读入,但不是全部。许多值已更改为 0,现在 V2 中的最小值是 -.07,而当我在 access 中运行相同的查询时,V2 中的最小值是 -.35。未更改为 0 的值是正确的。

我的下一个想法是从访问中的查询中创建一个表,然后尝试读取整个新表。但是,我强烈希望按照我最初计划的方式获取数据,并且我想弄清楚这个问题,以便将来避免它。

编辑:我无法显示实际查询,因为它是专有工作的一部分,但这是一个非常相似的查询:

0 投票
0 回答
305 浏览

rodbc - R RODBC - sqlSave 小数精度问题

我正在使用 RODBC 使用从 R 到 Oracle 的 sqlSave。我正在保存带小数位的数字并获得额外的小数位。例如:

来自 R 的 195.45 显示为

甲骨文中的 192.45000000000002

0 投票
3 回答
5100 浏览

sql - RODBC:sqlUpdate() 无法识别索引列

我的数据库表大致如下所示:

第一列 (ID1) 定义为 PK。但是,ID2 也是唯一的。

现在我希望能够使用from package更改FilePath2Status使用 R。所以我尝试以下方法:sqlUpdate()RODBC

其中db.df是一个数据框,其中一行和列名对应于数据库表中的行名(但是,在这种情况下,我省略了一些列,如果可能的话,我也FilePath1更愿意省略ID1)。我的目标是获得以下内容:

我收到以下错误:

这个问题的原因可能是什么?


编辑:我通过发送直接 SQL 查询绕过了这个问题:

虽然这可能不是一个简洁的方式,但它做了它应该做的事情。但是,我仍然不明白这是怎么回事sqlUpdate,所以我希望有人能解释一下。

0 投票
1 回答
274 浏览

excel - RODBC 读取错误,其中 excel 列包含前导 NA

我一直在阅读 Excel 表格以R使用该RODBC软件包,并且遇到了 Excel ODBC 驱动程序的问题。包含(足够的)前导 NA 的列被强制为逻辑。

在 Excel 中,数据显示如下:

我读入了以下数据:

这在整个第二列中读取为NA。我认为这是因为它被猜测是合乎逻辑的,因此随后的数字被评估为无效,因此NA.

我正在尝试找到一种方法来防止这种强制合乎逻辑,我认为这会导致随后的错误。

我通过搜索 SO 找到了这个Q+A,但是我正在工作并且不希望被允许编辑注册表以更改 DWORD 的默认值,如建议的那样(我知道这里设置的值决定了之前需要多少个 NA微软猜测数据类型并轰炸我的阅读)。

现在,我认为最好的解决方案是反转 Excel 中的数据,并将其倒置读入 R。

我喜欢一个好的黑客,但肯定有更好的解决方案吗?

0 投票
0 回答
1872 浏览

r - RODBC sqlQuery() 在成功执行时返回错误消息

这是一个时间敏感/紧急问题。我有一些 R 代码,其中涉及使用 RODBC 包的许多 SQL 查询。这段代码每天早上都在专用的 Linux 服务器上运行——它会提取一些数据,进行一些统计,然后将数据重新插入 MSSQL DB。

今天,我们的 sysarch 升级到 Ubuntu 12.04.1,从那时起,我遇到了一堆 ODBC 问题。在进行了一些更改之后,我们得到了它,以便可以建立 ODBC 连接,但现在有一个更大的问题。基本上,每次执行 CREATE 或 DROP 命令时,我都会从 RODBC 收到错误消息,即使已创建/删除了已识别的表。示例(bts.connect是 的结果odbcConnect([connection information])):

所以#tempscores 表存在

即使它存在,我们也“不能”放弃它

但是我们已经放弃了它。

我们也无法创建它,但它存在并且我们可以从中选择:

sqlQuery(bts.connect, "SELECT OBJECT_ID('tempdb.dbo.#tempscores')") 1 1066251024 sqlQuery(bts.connect, "SELECT * FROM #tempscores") [1] dummy <0 rows> (或 0-length行名称)

我束手无策,我真的需要这个明天早上为客户成功运行。有人知道是什么导致了这种奇怪的行为吗?

0 投票
1 回答
490 浏览

mysql - 表名超过 18 个字符时 sqlSave 失败

我目前正在编写一个脚本,该脚本从 FTP 服务器下载一堆 .csv,然后将每个 .csv 作为自己的表放入 MySQL 数据库中。

我使用 RCurl 从 FTP 下载 .csv 文件,并将所有 .csv 文件放在我的工作目录中。为了从每个 .csv 中创建表,我使用了 RODBC 包中的 sqlSave 函数,其中表名与 .csv 相同。每当 .csv 名称少于 18 个字符时,这都可以正常工作,但是当它更大时,它会失败。“失败”是指 R 崩溃。为了追踪这个错误,我在 sqlSave 上调用了调试。

我发现至少有两个 sqlSave 调用的函数会导致 R 崩溃。第一个是 RODBC:::odbcTableExists,它是一个不可见的函数。这是该函数的代码:

当表名长度超过 18 个字符时,此处失败:

我已通过将其更改为:

然后,我使用 assignInNamepace 重新分配命名空间中具有相同名称 (odbcTableExists) 的函数,并更改此代码。

RODBC:::odbcTableExists 不再导致问题。但是,当从 sqlSave() 中调用 sqlwrite 时,R 仍然会崩溃。我在 sqlwrite 上调用了调试,我发现 RODBC:::odbcColumns (另一个不可见的函数)会导致表名太长时崩溃。不幸的是,我不确定如何更改 RODBC:::odbcColumns 以避免像以前那样出现错误。

我使用的是 R 2.15.1,平台是:x86_64-pc-ming32/x64(64 位)。我还应该注意,我正在尝试在工作计算机上运行它,但是如果我在个人计算机上运行完全相同的代码,R 不会崩溃(没有错误)。工作计算机运行 windows 7 专业版,我的家用计算机运行带有 R 2.14.1 的 windows 7 家庭高级版。

0 投票
1 回答
3054 浏览

sql - RODBC 将数据框连接到 sqlQuery 中的表

我一直在使用 RODBC 连接到工作中的 DB2 数据库,到目前为止一切正常。我可以通过 sqlQuery 提取表,并在将它们作为数据框返回之前连接数据库中的表。但是,我经常通过抓取和操作表,然后将它们连接回数据库来加快 SAS 中的过程。当我尝试在 R 中执行此操作时,我遇到了问题。我希望它变成这样。

问题是 R 无法识别“数据框”。我认为它与“schema.dataframe”部分有关,因为我不确定工作区会有什么样的“模式”。有没有办法在 sqlQuery 中将数据框连接到数据库中的表?或者我可以以某种方式将数据框设为临时表并从那里加入吗?

0 投票
2 回答
3126 浏览

sql - 提供来自 R 向量的查找列表作为用于 RODBC 查找的 SQL 表

我有一个 R 向量中的 ID 列表。

我想写一个 RODBC sqlQuery,其中有一个子句说明类似

我是否必须阅读整个表格,然后将其合并到 R 中的 idList 向量?或者如何将这些值提供给 RODBC 语句,以便只恢复我感兴趣的记录?

注意:由于列表很长,将单个值粘贴到 SQL 语句中,如下面的答案所示,不会这样做。