gpt4 book ai didi

sql - 在 Stata 中创建和使用临时/ volatile 数据库表

转载 作者:行者123 更新时间:2023-12-04 23:57:55 26 4
gpt4 key购买 nike

附录:从 Stata 14 开始,可变表无需任何黑客攻击即可工作。

有没有办法调整 Stata 以使用临时 volatile 表?用户注销 session 后,这些表和数据将被删除。

这是一个简单的示例 玩具 我在 Stata 和 Teradata 中使用的 SQL 查询:

odbc load,  exec("
BEGIN TRANSACTION;
CREATE VOLATILE MULTISET TABLE vol_tab AS (
SELECT TOP 10 user_id
FROM dw_users
) WITH DATA
PRIMARY INDEX(user_id)
ON COMMIT PRESERVE ROWS;

SELECT * FROM vol_tab;
END TRANSACTION;
") dsn("mozart");

这是我收到的错误消息:
The ODBC driver reported the following diagnostics
[Teradata][ODBC Teradata Driver][Teradata Database] Only an ET or null statement is legal after a DDL Statement.
SQLSTATE=25000
r(682);

Stata 错误代码的意思是:

error . . . . . . . . . . . . . . . . . . . . . . . . Return code 682 could not connect to odbc dsn; This typically occurs because of incorrect permissions, such as a bad User Name or Password. Use set debug on to display the actual error message generated by the ODBC driver.



据我所知,权限很好,因为如果我只执行“SELECT TOP 10 ...”查询,我就可以提取数据。我设置了调试,但它没有产生任何额外的信息。

session 模式是 Teradata。 ODBC 管理器设置为 unixODBC。我在 Ubuntu 服务器上使用 Stata 13.1。

我相信潜在的问题可能是 separate connections are established for each SQL statement ,因此 volatile 表在发出选择时蒸发。我正在等待技术支持来验证这一点。

我尝试使用 odbc sqlfile命令很好,但这种方法不起作用,除非我在它的末尾创建一个永久表。 odbc sqlfile 没有加载选项.

volatile 表似乎在 SAS 中工作得很好和 R。例如,这完美地工作:
library("RODBC")
db <- odbcConnect("mozart")
sqlQuery(db,"CREATE VOLATILE MULTISET TABLE vol_tab AS (
SELECT TOP 10 user_id
FROM dw_users
) WITH DATA
PRIMARY INDEX(user_id)
ON COMMIT PRESERVE ROWS;
")
data<- sqlQuery(db,"select * from vol_tab;",rows_at_time=1)

也许这是因为到数据库的连接在 close(db) 之前一直保持打开状态。 .

最佳答案

我不熟悉 Stata,但我猜测您的 ODBC 正在以“ANSI”模式连接。尝试在 create volatile table 之间添加这个和 select声明:

commit work;

如果这不起作用,您可能需要以某种方式进行两个单独的调用。

更新:多考虑一下,也许你可以试试这个:
odbc load, exec("select distinct user_id from dw_users where cast(date_confirm as
date) > '2011-09-15'") clear dsn("mozart") lowercase;

换句话说,只需一步执行查询;不要尝试创建 volatile 表。

关于sql - 在 Stata 中创建和使用临时/ volatile 数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845209/

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