Eu estou querendo saber se existe uma ferramenta (ou uma técnica especial) que alguém usou para mapear arquivos simples de largura fixa em gerenciadores de conexão de arquivo simples SSIS?
Normalmente, eu apenas uso o Editor do Gerenciador de Conexões de Arquivo Simples (guia Avançado) e começo a adicionar as informações da coluna (nome, largura, tipo de dados etc.) para todas as colunas 1 por 1.
Isso funcionou bem para mim no passado, mas agora tenho que mapear um arquivo de largura fixa com cerca de 500 colunas...
Estou pensando (esperando) que deve haver uma ferramenta ou técnica que eu possa usar que me permita realizar o mapeamento de uma forma mais simplificada...
Usando o dicionário de dados que me foi fornecido para o arquivo, eu poderia criar facilmente um documento do Excel (ou texto), por exemplo, com algumas colunas que incluem as informações necessárias que o SSIS precisa (nome da coluna, delimitador, largura da coluna de entrada, largura da coluna de saída, tipo de dados) para mapear o arquivo .
Gostaria de saber se existe uma ferramenta ou componente SSIS que possa ler este arquivo e criar automaticamente os mapeamentos no Flat File Connection Manager para mim...
Se não existe essa ferramenta, alguém tem algum truque ou dica que possa me ajudar a mapear o arquivo da maneira mais eficiente?
Estou me perguntando se talvez eu possa modificar o arquivo xml do pacote SSIS de uma maneira que eu possa criar algum código que crie um script com as informações da coluna para todas as colunas no formato xml e, em seguida, eu possa copiá-lo e colá-lo manualmente no xml do pacote arquivo ... não tenho certeza se isso funcionaria ....
Obs: Após mapear o arquivo no SSIS, ele será carregado em uma tabela do SQL Server
Duas opções vêm à mente, ambas são recursos do BIDS Helper que não pode dizer coisas boas o suficiente sobre esta ferramenta gratuita .
Criar colunas de largura fixa
O primeiro é o recurso Criar colunas de largura fixa . É tão simples quanto criar um gerenciador de arquivos simples apontando para o arquivo correto e definir 1 coluna.
Feito isso, clique com o botão direito do mouse novamente no Connection Manager e use o recurso sensível ao contexto de "Criar colunas de largura fixa ..."
Na próxima janela, cole a lista delimitada por tabulações (Excel) no editor
Oh sim, é simples. Se você precisar fazer alguns ajustes nos tipos de coluna e outros, entre e altere-os normalmente com a edição.
biml
Eu gosto do Business Intelligence Markup Language para o meu desenvolvimento SSIS. Há muitos benefícios nisso, mas em um nível mais básico, use-o para coisas como arquivos simples, especialmente quando eles não fornecem linhas de cabeçalho (estou olhando para vocês, seus mainframes).
Muitas vezes, minha experiência ao lidar com sistemas legados é que eles têm suas definições de arquivo em copybooks COBOL. Esses desenvolvedores me enviarão arquivos do Excel com o layout da coluna como
Não é sofisticado, mas as fórmulas do Excel simplificaram o trabalho. Então, eu criaria 4 novas colunas com base no acima.
Nome sanitizado (caracteres inválidos removidos para nomes de colunas)
Comprimento (extraído os números, observe que ainda tem um 0 à esquerda, mas não prejudica)
XML (isso cria o XML real para uma definição de arquivo simples)
DDL (é melhor construir a tabela de destino enquanto estou nisso)
A primeira coluna do DDL obtém a vírgula principal descartada e, em seguida, agrupada com
CREATE TABLE dbo.FOO()
Em última análise, esse XML resulta em algo que é colocado em uma
FlatFileFormat
tag e, em seguida, é uma simples questão de criar a coleção Connections e, finalmente, o próprio pacote. Parece muito, mas na verdade é bem simples, uma vez que você tenha um padrão.Ah, e uma pergunta semelhante do SO com uma resposta perturbadoramente semelhante. Gostaria de ter olhado os comentários de Skinner antes de reescrever esta resposta.