Как автоматически добавить идентификатор в SAS - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть следующий код SAS:

PROC SQL;
    CREATE TABLE HUB_Addresses (
    AddressID INT AUTO_INCREMENT,
    LOAD_DATE NUM FORMAT=DATETIME22. NOT NULL, 
    RECORD_SOURCE VARCHAR(255) NOT NULL   

   );

RUN;
quit;

Но AUTO_INCREMENT не работает. Как я могу это исправить

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

СУБД функций, обнаруженных в других системах, таких как Oracle, SQL Сервер или Netezza:

  • auto_increment не в SAS SQL
  • триггеры не в SAS SQL
  • значения по умолчанию не в SAS SQL
  • последовательности не в SAS SQL

Если ваш дизайн данных зависит от auto_increment, вам придется использовать стороннюю базу данных и соответствующий механизм SAS / ACCESS для взаимодействия с ней.

Proc SQL не хватает перечисленных функций, потому что базовый библиотечный механизм SAS по умолчанию (V9) не поддерживает такие функции.

Если у вас уже есть доступное соединение MySQL и SAS / ACCESS двигатель для взаимодействия:

  • SAS / доступ к MySQL или
  • SAS / доступ к ODB C с MySQL ODB C с установленными драйверами

Синтаксис pass-through можно использовать для отправки MySQL операторов непосредственно на сервер базы данных.

libname REMOTE MYSQL … connection options …;

PROC SQL;
    connect using REMOTE;

    execute (
      /* MySQL statement */
      CREATE TABLE HUB_Addresses (
      AddressID INT AUTO_INCREMENT,
      LOAD_DATE DATE NOT NULL, 
      RECORD_SOURCE VARCHAR(255) NOT NULL
    ) 
    by REMOTE;

    * insertion occurs through SAS/ACCESS engine via REMOTE libref;
    insert into REMOTE.HubAddresses 
      values (., '01FEB2010'D, 'Manual insert')
    ;
0 голосов
/ 01 февраля 2020

Вы можете добавить другие столбцы и запустить.

CREATE TABLE `HUB_Addresses` ( 
    `AddressID` INT NOT NULL AUTO_INCREMENT , 

    PRIMARY KEY (`AddressID`)) 
    ENGINE = MyISAM;

...