将DDL MasterFile表转换为SQL Server表,如何写入缺失的数据?

问题描述 投票:0回答:1

我正在努力将 DDL 主文件转换为 SQL Server 表,并且每个文件中的文件中都有 MISSING=ON,我将其解释为“如果丢失,则要注意”之类的事情。当它仅出现在某些行中时,如何将其转换为我正在创建的 SQL 表?示例如下:

FILENAME=EX_AGENCY_ACTIVE, SUFFIX=SQLORA  , $
  SEGMENT=EX_AGENCY_ACTIVE, SEGTYPE=S0, $
    FIELDNAME=AGENCY_ACRONYM, ALIAS=AGENCY_ACRONYM, USAGE=A12, ACTUAL=A12,
      **MISSING=ON**, $
    FIELDNAME=AGENCY_ACTIVE_DATE, ALIAS=AGENCY_ACTIVE_DATE, USAGE=A40, ACTUAL=A40,
      **MISSING=ON**, $
    FIELDNAME=AGENCY_ACTIVE_FLAG, ALIAS=AGENCY_ACTIVE_FLAG, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=AGENCY_CODE, ALIAS=AGENCY_CODE, USAGE=A24, ACTUAL=A24,
      **MISSING=ON**, $
    FIELDNAME=AGENCY_EFFECTIVE_DATE, ALIAS=AGENCY_EFFECTIVE_DATE, USAGE=YYMD, ACTUAL=DATE,
     **MISSING=ON**, $
    FIELDNAME=AGENCY_NAME, ALIAS=AGENCY_NAME, USAGE=A40, ACTUAL=A40,
      **MISSING=ON**, $
    FIELDNAME=AGENCY_WK, ALIAS=AGENCY_WK, USAGE=D20.6, ACTUAL=D8, $

目前我正在考虑在所有列中添加

NOT NULL
,但我预计这些表中的很多都会丢失数据,因为并非所有内容都是“必需的”。这样的情况我会做吗?

SET Missing = CASE 
                  WHEN FieldName, Usage, Actual IS NULL 
                      THEN 0 
                      ELSE 1 
              END
sql-server bit-manipulation missing-data ddl create-table
1个回答
0
投票

这是最适合您情况的。

DDL 主文件中的

MISSING=ON
指令确实指示该字段可以缺失或为空。

在 SQL Server 中,您可以通过设置列允许空值来实现此目的。这是创建表的示例。

CREATE TABLE EX_AGENCY_ACTIVE (
    AGENCY_ACRONYM varchar(12) NULL,
    AGENCY_ACTIVE_DATE varchar(40) NULL,
    AGENCY_ACTIVE_FLAG char(1) NOT NULL,
    AGENCY_CODE varchar(24) NULL,
    AGENCY_EFFECTIVE_DATE date NULL,
    AGENCY_NAME varchar(40) NULL,
    AGENCY_WK decimal(20, 6) NULL
);

通过将列设置为

NULL
,您可以允许该列接受空值,这相当于
MISSING=ON
指令。

在您的情况下,建议使用

CASE
语句来设置
missing
列的解决方案在这种情况下是不必要的。

© www.soinside.com 2019 - 2024. All rights reserved.