我正在尝试将 LogParser 用于 ETL。我正在尝试使用以下命令导入此文件:
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1 AS CountryCode, Field2 AS Zip INTO ZipCodes FROM 'c:\Users\jdearing\Downloads\us.txt'" -i:TSV - headerrow:OFF -o:SQL -server 。-数据库 LogParserTest -createtable -cleartable
它像这样创建一个表:
CREATE TABLE [dbo].[ZipCodes](
[CountryCode] [varchar](255) NULL,
[Zip] [int] NULL
);
如果我将命令更改为
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1 AS CountryCode, TO_STRING(Field2) AS Zip INTO ZipCodes FROM 'c:\Users\jdearing\Downloads\us.txt'" -i :TSV -headerrow:OFF -o:SQL -server 。-数据库 LogParserTest -createtable -cleartable
它创建下表: CREATE TABLE [dbo].[ZipCodes]( [CountryCode] varchar NULL, [Zip] varchar NULL );
所以TO_STRING(Field2) AS Zip INTO ZipCodes
创造[Zip] [varchar](255) NULL
。
然而,我的目标是使结果表成为:
CREATE TABLE [dbo].[ZipCodes](
[CountryCode] [char](2) NOT NULL,
[Zip] [char](5) NOT NULL
);
两列都保持 VARCHAR(255) NULL,带有 SUBSTR,如下所示:
SUBSTR(Field1, 0, 2) 作为国家代码,SUBSTR(TO_STRING(Field2), 0, 5) 作为 Zip
如何让 LogParser 创建具有固定长度 NOT NULL char 列的表?