这是我的代码:
PROC SQL;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);
EXECUTE ( INSERT INTO dbo.tblDLA_Backup SELECT * FROM &dlafile.) BY ODBC;
disconnect from odbc;
quit;
我收到此错误
错误:CLI执行错误:[Microsoft] [SQL Server Native Client 11.0] [SQL Server]无效的对象名称' work.dlabackup'。
如果我这样做:
proc sql;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);
insert into tblDLA_Backup SELECT * FROM WORK.DLABACKUP;
disconnect from odbc;
退出;
我收到此错误:
错误:文件WORK.TBLDLA_BACKUP.DATA不存在。
为什么我无法引用我的SAS数据集而只是插入?它应该很简单..
答案 0 :(得分:0)
发生第一个错误是因为您正在 SQL Server 上执行SQL指令,而不是本地。由于此指令包含对本地 SAS数据集的引用,因此SQL Server认为它是自己数据库中的表,因此会发生错误。
你对那个采取了错误的做法。
您的第二种方法是正确的,因为您在SAS中执行SQL,它们都知道本地数据集和 SQL服务器表。乍一看它在语法上是有效的。
错误很明显:SAS没有找到本地数据集WORK.TBLDLA_BACKUP
因此,请验证此数据集是否存在且未损坏:
在资源管理器窗口中,点击图书馆,然后点击工作,并验证 TBLDLA_BACKUP 是否存在,如果是,请打开它并检查您是否看到了您的数据。
此时我不能多说,但你应该发现一些东西。
答案 1 :(得分:0)
你需要使用你要写入国外数据库的libref。
libname sqldb odbc dsn=ODC uid=sa pwd=XXXXX ;
PROC SQL;
INSERT INTO SQLDB.tblDLA_Backup SELECT * FROM &dlafile.;
quit;
请注意,您还需要修复它,以便您的宏变量包含存在的表的名称。