AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 105731
Accepted
Justin Dearing
Justin Dearing
Asked: 2015-07-02 18:09:56 +0800 CST2015-07-02 18:09:56 +0800 CST 2015-07-02 18:09:56 +0800 CST

Definindo a largura da coluna de uma coluna em uma tabela criada por logparser

  • 772

Estou tentando usar o LogParser para ETL. Estou tentando importar este arquivo com o seguinte comando:

"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 . -database LogParserTest -createtable -cleartable

Ele cria uma tabela assim:

CREATE TABLE [dbo].[ZipCodes](
    [CountryCode] [varchar](255) NULL,
    [Zip] [int] NULL
);

Se eu mudar o comando para

"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 -cabeçalho:OFF -o:SQL -servidor . -database LogParserTest -createtable -cleartable

Ele cria a seguinte tabela: CREATE TABLE [dbo].[ZipCodes]( [CountryCode] varchar NULL, [Zip] varchar NULL );

Assim TO_STRING(Field2) AS Zip INTO ZipCodescria [Zip] [varchar](255) NULL.

Meu objetivo, no entanto, é que a tabela resultante seja:

CREATE TABLE [dbo].[ZipCodes](
    [CountryCode] [char](2) NOT NULL,
    [Zip] [char](5) NOT NULL
);

Ambas as colunas permanecem VARCHAR(255) NULL com um SUBSTR da seguinte forma:

SUBSTR(Campo1, 0, 2) AS CountryCode, SUBSTR(TO_STRING(Campo2), 0, 5) AS Zip

Como obtenho o LogParser para criar a tabela com colunas de caracteres NOT NULL de comprimento fixo?

etl logparser
  • 1 1 respostas
  • 225 Views

1 respostas

  • Voted
  1. Best Answer
    Justin Dearing
    2015-07-02T18:09:56+08:002015-07-02T18:09:56+08:00

    É possível chegar um pouco perto disso. Primeiro pré-crie a tabela

    IF object_id('[LogparserTest].[dbo].[ZipCodes]') IS NOT NULL
    BEGIN 
        DROP TABLE [dbo].[ZipCodes]
    END
    
    CREATE TABLE [dbo].[ZipCodes](
        [CountryCode] [varchar](3) NOT NULL,
        [Zip] [varchar](6) NOT NULL
    );
    

    Observe que você deve usar colunas varchar com um caractere mais largo que sua entrada.

    Agora execute este comando, observe a falta de -createtable, mas você pode mantê-lo lá, se desejar. Ele não recria uma tabela existente:

    "c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT SUBSTR(Field1, 0, 1) AS CountryCode, SUBSTR(TO_STRING(Field2), 0, 5) AS Zip INTO ZipCodes FROM 'c: \Users\jdearing\Downloads\us.txt'" -i:TSV -headerrow:OFF -o:SQL -server . -database LogParserTest -cleartable -transactionRowCount:0 -ignoreMinWarns:OFF

    Se você criar as colunas de comprimento corretas como char ou varchar, obterá o seguinte erro para cada linha:

    An error occurred while uploading data to SQL table
      SQL State:     22001
      Native Error:  0
      Error Message: [Microsoft][ODBC SQL Server Driver]String data, right
      truncation
    

    No entanto, observe que SELECT MAX(LEN([CountryCode])), MAX(LEN(ZIP)) FROM [LogparserTest].[dbo].[ZipCodes];Returns 2 e 5. Traçar a inserção em massa com eventos estendidos mostra que as coisas estão sendo parametrizadas da seguinte maneira, então não sei o que está acontecendo:

    (@Param000004 char(2),@Param000005 char(5))INSERT [LogparserTest].[dbo].ZipCodes VALUES(@Param000004,@Param000005)

    Portanto, neste ponto, você ainda precisa executar um comando ALTER TABLE ALTER COLUMN para alterar cada coluna, para que não compre muito.

    • 0

relate perguntas

  • Duplicando algumas linhas de um fluxo de dados no SSIS

  • Script ActiveX lançando erro de tempo de execução dentro do pacote DTS

  • SQL 2008: erro de trabalho do agente ao abrir arquivos Excel usando o pacote DTS

  • Algum código aberto / ETL gratuito por aí? [fechado]

  • Como posso usar um ETL?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve