Pergunta

Alguém já foi capaz de obter um arquivo de texto comprimento de registro variável (CSV) em SQL Server via SSIS?

Eu tentei uma e outra vez para obter um arquivo CSV em uma tabela SQL Server, usando o SSIS, onde o arquivo de entrada tem diferentes comprimentos de registros. Para esta questão, os dois comprimentos diferentes são ficha 63 e 326 bytes. Todos os comprimentos ficha vai ser importado para a mesma tabela de largura 326 bytes.

Existem mais de 1 milhão de registros para importação.
Eu não tenho controle da criação do arquivo de importação.
Devo usar o SSIS.
Eu confirmei com MS que este foi reportado como um bug. Eu tentei várias soluções alternativas. A maioria tem sido onde eu tento escrever código personalizado para interceptar o disco e eu não posso parecer para conseguir que o trabalho que eu quiser.

Foi útil?

Solução

Eu tive um problema semelhante, e código personalizado utilizado (Script Task), e um componente de script sob a guia Fluxo de Dados.

Eu tenho um arquivo simples Fonte de alimentação para um componente de script. Dentro lá eu usar o código para manipular os dados incomming e corrigi-lo para o destino.

Meu problema era o provedor estava usando '000000' como nenhuma data disponível, e outra coloumn tinha um preenchimento emissão / guarnição.

Outras dicas

Você deve ter nenhum problema importar este arquivo. Apenas certifique-se quando você criar o gerenciador de conexão Flat File, selecione delimitado formato, então o comprimento conjunto de colunas SSIS ao comprimento máximo da coluna de arquivo para que ele possa acomodar todos os dados.

Parece que você está usando fixo formato de largura, o que não é correto para arquivos CSV (desde que você tem coluna de tamanho variável), ou talvez você tenha configurado incorretamente o delimitador de coluna.

Mesmo problema. No meu caso, o arquivo de destino CSV tem de Cabeçalho e Rodapé registros com formatos completamente diferentes do que o corpo do arquivo; o cabeçalho / rodapé são usadas para validar a integralidade de processamento de arquivo (Data / vezes, a contagem de recordes, quantidade totais - "soma de verificação" por qualquer outro nome ...). Este é um formato comum para arquivos de ambientes "de mainframe", e embora eu não ter começado sobre ele ainda, eu esperava ter que usar scripts para retirar o cabeçalho / rodapé, salvar o resto como um novo arquivo, processar a nova arquivo e, em seguida, fazer a validação. Não se pode esperar exatamente MS ter que sair-of-the box (mas com certeza seria bom, não é?).

Você pode escrever uma tarefa script usando C # para percorrer cada linha e preenchê-lo com a quantidade adequada de vírgulas para preencher o fora de dados. Isso pressupõe, naturalmente, que todos os alinha de dados com as colunas adequadas.

i. enquanto você lê cada registro, você pode "contar" o número de vírgulas. Em seguida, basta adicionar um número X de vírgulas para o fim do registo até que ele tem o número correto de vírgulas.

Excel tem um problema que faz esse tipo de arquivo a ser criado ao converter para CSV.

Se você pode fazer isso "à mão" a melhor maneira de resolver isso é abrir o arquivo em Excel, crie uma coluna no "fim" do registro, e preenchê-lo todo o caminho com 1s ou algum outro caráter.

desagradável, mas pode ser uma solução rápida.

Se você não tem a capacidade de fazer isso, você pode fazer a mesma coisa programaticamente como descrito acima.

Por que você não pode simplesmente importá-lo como um arquivo de teste e definir o delimitador de coluna para "", eo delimitador de linha para CRLF?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top