SAS - 将语句插入现有 SQL table

SAS - Insert statement into existing SQL table

这是我的代码:

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;

我遇到了这个错误

ERROR: CLI execute error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'work.dlabackup'.

如果我这样做:

proc sql;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);


insert into tblDLA_Backup SELECT * FROM WORK.DLABACKUP;

disconnect from odbc;

退出;

我收到这个错误:

ERROR: File WORK.TBLDLA_BACKUP.DATA does not exist.

为什么我不能引用我的 SAS 数据集而只能插入?应该就这么简单..

出现第一个错误是因为您正在 SQL 服务器 上执行 SQL 指令,而不是 本地 .由于此指令包含对本地 SAS 数据集 的引用,因此会发生错误,因为 SQL 服务器认为它是自己数据库中的 table。

你在那个问题上采取了错误的方法。

你的第二种方法是正确的,因为你在 SAS 中执行 SQL,它都知道 local datasetSQL 服务器 tables。乍一看它在语法上是有效的。

错误很明显:SAS 没有找到本地数据集 WORK.TBLDLA_BACKUP

因此,验证此数据集是否存在且未损坏:

在您的资源管理器window中,点击图书馆,然后点击工作 ,并验证 TBLDLA_BACKUP 是否存在,如果是,请打开它并检查您是否看到您的数据。

此时我不能说更多,但希望您能有所发现。

要写入国外数据库需要使用libref。

libname sqldb odbc dsn=ODC uid=sa pwd=XXXXX ;
PROC SQL;
  INSERT INTO SQLDB.tblDLA_Backup SELECT * FROM &dlafile.;
quit;

请注意,您还需要修复它,以便您的宏变量包含存在的 table 的名称。