gpt4 book ai didi

sql - 如何根据 R 中的数据框从 ODBC 数据库中删除记录

转载 作者:行者123 更新时间:2023-12-04 13:40:20 25 4
gpt4 key购买 nike

我在 R 中有一个包含记录列表的数据框。我想从我的 ODBC 数据源中删除所有匹配的记录。

    data_to_delete ##This is my dataframe

delete from RODBC datasource where record_id IN (select record_id
from data_to_delete)

关于如何实现这一目标的任何想法?我目前正在使用 sqlQuery 来提取数据并使用 sqlSave 来创建新记录,但我不确定如何删除记录。

最佳答案

作为answers to this related question解释一下,您需要构建包含 DELETE 的字符串。语句,然后您可以执行 DELETE声明与 sqlQuery 中的任何其他声明一样.

所以在你的 DELETE 结尾,不要尝试从 R 变量中“选择”,而只是将其内容转储到逗号分隔的字符串中。下面,我假设无论 data_to_delete是,我们可以使用 pasteas.character将其吐出以逗号分隔的字符串。但是您可以根据需要对其进行修改。

我还假设您的意思是 datasource引用数据库,我使用some_table_name作为该数据库中表名的占位符。您应该针对您的具体情况调整这些值。

del_query <- sprintf("DELETE from some_table_name
where record_id IN (%s)",
paste(as.character(data_to_delete),
collapse=", ")
)

sqlQuery(datasource, del_query)

使用这种方法,如果您的数据内容很大,您需要小心。 IN 中可以出现的不同符号的数量通常有符号限制。子句——类似于 SQL Server 中默认的 2000 个符号。

如果您需要更多的值,您可以首先发出一个查询,将值写入数据库上的一个临时表,然后发出一个带有 sqlQuery 的查询。包含额外的 IN ( SELECT * FROM ... )但是您将从该临时表中查询,而不是“从” R 变量。

关于sql - 如何根据 R 中的数据框从 ODBC 数据库中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26373739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com