Преобразование SQL сервера в запрос Teradata - PullRequest
0 голосов
/ 16 июня 2020

Я хочу преобразовать следующий запрос сервера SQL в сценарий Teradata BTEQ. Может ли кто-нибудь помочь в этом процессе ..

Лог создания таблицы c выглядит следующим образом, и его необходимо преобразовать в Teradata

CREATE TABLE [Eqp].[t_WSTCPEStairstep]
(
[SysID] [smallint] NULL,
[PrinID] [smallint] NULL,
[Account] [bigint] NOT NULL,
[Order_No] [bigint] NOT NULL,
[Order_Typ] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Eqp_Serial] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Eqp_Typ] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Eqp_Model] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Disco_Dte] [date] NULL,
[Return_Dte] [date] NULL,
[Restart_Dte] [date] NULL,
[Lost_Dte] [date] NULL,
[TestFlag] [smallint] NULL
) ON [PRIMARY]
WITH
(
DATA_COMPRESSION = PAGE
)
GO
CREATE NONCLUSTERED INDEX [ix_WSTCPEStairstepDiscoDteIndex] ON [Eqp].[t_WSTCPEStairstep] ([Disco_Dte]) ON [PRIMARY]
GO
CREATE CLUSTERED INDEX [ix_WSTCPEStairstepSPAIndex] ON [Eqp].[t_WSTCPEStairstep] ([SysID], [Account]) WITH (DATA_COMPRESSION = PAGE) ON [PRIMARY]
GO

1 Ответ

1 голос
/ 16 июня 2020

Я не уверен насчет некоторых из SQL Server специфических c бит (сжатие, кластеризация, первичный), но это даст вам начало:

CREATE TABLE Eqp.t_WSTCPEStairstep (
  SysID SMALLINT,
  PrinID SMALLINT,
  Account BIGINT NOT NULL,
  Order_No BIGINT NOT NULL,
  Order_Typ VARCHAR(1),
  Eqp_Serial VARCHAR(25),
  Eqp_Typ VARCHAR(2),
  Eqp_Model VARCHAR(9) ,
  Disco_Dte DATE,
  Return_Dte DATE,
  Restart_Dte DATE,
  Lost_Dte DATE,
  TestFlag SNALLINT
) 
PRIMARY INDEX(col1, col2, ...);

-- Indexes
CREATE INDEX ix_WSTCPEStairstepDiscoDteIndex (Disco_Dte) ON Eqp.t_WSTCPEStairstep;
CREATE INDEX ix_WSTCPEStairstepSPAIndex (SysID, Account) ON Eqp.t_WSTCPEStairstep;

Какой столбец (столбцы) вы используете для доступа к данным в этой таблице? Если они обеспечивают равномерное распределение (т.е. в основном различные значения), укажите их как поля PRIMARY INDEX. И если эти поля уникальны, еще лучше - UNIQUE PRIMARY INDEX. Возможно, это один из указанных вами индексов - disco_dte или (SysID, Account).

Еще несколько примечаний:

  • столбцы должны быть NULLABLE по умолчанию
  • если TestFlag составляет всего 1/0, вы можете использовать тип данных BYTEINT
  • вы можете преобразовать VARCHAR(1) и VARCHAR(2) в CHAR
  • для сжатия, вы можете добавить это на нескольких уровнях, но я думаю, что чаще всего это на уровне столбца
...