【问题标题】:Convert SQL server to Teradata Query将 SQL 服务器转换为 Teradata 查询
【发布时间】:2020-10-06 02:39:51
【问题描述】:

我想将以下 SQL 服务器查询转换为 Teradata BTEQ 脚本。任何人都可以在这个过程中提供帮助..

建表逻辑如下,需要转换成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

【问题讨论】:

  • 欢迎来到 Stack Overflow!请继续阅读how to ask 以提高您获得答案的机会

标签: sql-server teradata


【解决方案1】:

我不确定SQL Server 的某些特定位(压缩、集群、主要),但这会给你一个开始:

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
  • 对于压缩,您可以在多个级别添加,但我认为最常见的是在列级别

【讨论】:

  • DATA_COMPRESSION = PAGECREATE TABLE Eqp.t_WSTCPEStairstep, BLOCKCOMPRESSION = ALWAYS (... 类似,但通常在系统级别设置。根据硬件,这可能很糟糕。 CLUSTERED INDEX 类似于PRIMARY INDEX (SysID, Account)。第二个索引可以实现为表的分区,但这取决于使用情况和数据人口统计。
猜你喜欢
  • 2020-12-02
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 2020-12-11
相关资源
最近更新 更多