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 / 128757
Accepted
mpag
mpag
Asked: 2016-02-10 10:09:46 +0800 CST2016-02-10 10:09:46 +0800 CST 2016-02-10 10:09:46 +0800 CST

SSMS: importar de arquivo simples (.csv)

  • 772

No SQL Server Management Studio (SSMS) 2008 R2, desejo importar um CSV não formatado corretamente para uma tabela de banco de dados. Eu estava tentando usar o assistente em <database name>-> Tasks-> Import Data.

Diferenças do "padrão" CSV

  1. valores nulos são representados por um espaço entre vírgulas
  2. alguns campos têm vírgulas no meio deles e não estão entre aspas
  3. há uma vírgula terminal em todas as linhas, exceto na linha de cabeçalho (WTF??)

Acabei resolvendo esses problemas manualmente editando o CSV antes da importação. O problema 2 foi corrigido substituindo vírgulas por traços para as 4 famílias de valores de células que estavam causando isso. Problema 3 Eu resolvi com uma pesquisa e substituição para essas vírgulas terminais. Problema 1, que era um problema para campos numéricos, também com pesquisa e substituição , ,-> ,,.

Quando meu arquivo finalmente foi importado corretamente, os valores nulos foram substituídos por zeros, embora eu tivesse permitido valores nulos nas definições de campo.

Minha pergunta básica: existe uma maneira de alterar o código para CAST/ CONVERToperações durante uma importação do SSMS? A única etapa em que consegui chegar ao código SQL foi nas definições de campo da tabela criada (de Select Source Tables and Views-> Edit Mappings-> Edit SQL- que estava disponível se e somente se eu não tivesse alterado o nome da tabela de destino na Select Source Tablespágina), mas isso foi apenas para a CREATE TABLEdefinição e não abordou o processo de importação. Realmente parece-me que devo permitir que uma string de espaço de um único caractere seja convertida em um valor nulo quando convertida em um número (em vez disso, o assistente falha e informa que um valor está fora dos limites). Além disso, a string nula certamente deve ser convertida para o valor inteiro nulo, em vez de 0.

Posso salvar um pacote SSIS, mas não estava claro para mim como editar e executá-lo para permitir o que quero fazer. Existe um arquivo de modelo em algum lugar que eu possa editar para permitir que strings nulas sejam convertidas em valores inteiros nulos (como algo aqui .... )? Existe uma maneira de usar partes do assistente de importação para gerar código tSQL? Em vez disso, devo usar uma BULK INSERTinstrução em vez do assistente?

sql-server-2008-r2 ssis
  • 1 1 respostas
  • 1401 Views

1 respostas

  • Voted
  1. Best Answer
    billinkc
    2016-02-10T15:27:50+08:002016-02-10T15:27:50+08:00

    O assistente de Importação/Exportação cria um pacote SSIS nos bastidores, mas o pacote que o assistente cria executa apenas o E e L de ETL (Extrair, Transformar, Carregar). O que você está procurando é T porque precisava transformar esses dados estranhos em algo mais gerenciável.

    Para a linha de cabeçalho estranha, você sempre pode especificar que não há linha de cabeçalho e o gerenciador de conexões deve pular N linhas.

    Infelizmente, não há muito o que fazer sobre a própria análise quando há delimitadores embutidos. Logicamente, você pode olhar e ver que Kansas City, MO era todo um campo, mas o analisador é simplista e quebra a string no delimitador, exibindo um caractere de escape.

    Para espaços não vazios, a maneira do assistente de Importação-Exportação seria importar para uma tabela de todas as colunas varchar e, em seguida, escrever uma consulta de extração executando qualquer mágica preferida para transformá-la em NULLNULLIF(RTRIM(MyCol), '') AS MyCol

    Notas aleatórias para futuros leitores

    Se você estiver em 2005 ou 2008, a única maneira de obter o editor SSIS, BIDS (Business Intelligence Design Studio) é ter uma cópia da mídia de instalação do SQL Server. 2012+ A Microsoft permite o download e a instalação da edição SQL Server Data Tools-BI sem a necessidade de uma instalação do SQL Server.

    O assistente de importação/exportação está disponível em todas as edições do SQL Server, incluindo o Express, mas a limitação aqui é que você não pode salvar o pacote SSIS gerado se estiver usando o Express. Todas as outras versões funcionam bem.

    • 2

relate perguntas

  • Propriedades de redução automática, criptografia e modelo de recuperação no SQL Server 2008 R2

  • A instalação autônoma do cluster do SQL Server 2008 R2 falha com o erro - "Caracteres ilegais no caminho".

  • Migração de banco de dados grande

  • plano de manutenção executado pelo agente

  • Randomizando o conteúdo da tabela e armazenando-o de volta na tabela

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