首页 > 解决方案 > 如何将 SAS 创建的表移动到 sql server 中的不同文件组

问题描述

我们有一个过程,在 SAS 中生成一个表,我们使用该 SAS 生成的表在 SQL Server 中创建一个表,但是,该表是在默认文件组上创建的,但我需要更改代码以指定不同的文件组由于空间限制,需要在哪里创建它。SAS上写的代码如下(下),DBO.TBL_A是SAS Created表,DBO.TBL是要在SQL server中创建的表。我尝试做的是在下面添加那行代码来指定我想要添加到的文件组,但是 SAS 给了我一个错误(见图),我对 SAS 不是很技术,我不知道为什么这行代码不管用。我错过了什么?

CREATE TABLE DBO.TBL[![enter image description here][1]][1]
AS
SELECT 
  input(&varFileDate, BEST22.) as FileDate  ,
  TRIM(SSN) as SSN              , 
  ExmDescription                , 
  Status                        ,
  ScaledScore                   ,
  ExamDate          
  FROM DBO.TBL_A
  ORDER BY SSN; 

-- I tried the following

CREATE TABLE DBO.TBL
AS
SELECT 
  input(&varFileDate, BEST22.) as FileDate  ,
  TRIM(SSN) as SSN              , 
  ExmDescription                , 
  Status                        ,
  ScaledScore                   ,
  ExamDate          
  FROM DBO.TBL_A
  ORDER BY SSN
  ON [STAGING_DATA_FG02] WITH (DATA_COMPRESSION = PAGE)

我添加了 ON [STAGING_DATA_FG02] WITH (DATA_COMPRESSION = PAGE); 紧接在 ; 但它不会工作

在此处输入图像描述

标签: sql-serversas

解决方案


假设 libref DBO 是到远程数据库的连接。所以也许是这样的

libname dbo odbc .... ;

如果你想告诉它在数据库的不同位置创建新表,你可以使用SCHEMA= dataset 选项。

create table dbo.tbl (schema='STAGING_DATA_FG02') ....

否则,使用显式传递以使用本机 SQL 语法来创建表。如果源和目标都在该数据库中,那可能是最好的选择,因为那时根本不需要将数据移动到 SAS。

proc sql;
  connect using dbo ;
  execute by dbo (
     ... your remote database code goes here ...
  );

推荐阅读