No SSIS (2012 especificamente), há uma opção na fonte de dados de arquivo simples para pular várias linhas no início de um arquivo. A visualização aparece corretamente. No entanto, ao tentar executar o fluxo de dados, parece que essas linhas ainda estão sendo validadas; de modo que, se contiverem dados inválidos (linhas em branco), a fonte de dados falhará. Isso evita o uso de uma alternância condicional para remover linhas, pois o fluxo de dados nunca é iniciado.
Esta é uma descrição precisa do funcionamento normal e existe alguma maneira de contornar isso?
Os dados de amostra se parecem com -
COL1|COL2|COL3
abc|123|10
def|456|20
ghi|789|30
Você está lendo de trás para frente. Você o instruiu a pular a primeira linha de dados e ele faz isso. Em seguida, ele procura na próxima linha por cabeçalhos de coluna, que não encontrará porque está em branco. Os dados reais devem ser encontrados na terceira linha. Ele tenta dar uma pista quando você olha para a visualização. Eu crio dois arquivos, um com seus dados e outro com a primeira linha em branco e os cabeçalhos na segunda linha.
Observe que estamos visualizando as linhas 2-4
Compare isso com o seu espaço em branco entre o cabeçalho e os dados
Ainda visualizando as linhas 2-4, mas os nomes de cabeçalho padrão são as primeiras linhas de dados. Não é bem o que estamos esperando.
Quando criei um fluxo de dados simples usando os dois gerenciadores de conexões, ele falhou (conforme esperado) no BlankSecondRow, pois a definição acima executa alguma validação de que os nomes dos cabeçalhos estão realmente lá. Se eu desmarcar "Nomes de coluna na primeira linha de dados" e subir "Linhas de cabeçalho para pular para" 2, funcionará.
Você deve selecionar em propriedades --> DELAY VALIDATION = TRUE . Por padrão, ele é definido como falso. Isso resolverá o problema que você está enfrentando.
ATUALIZAR :
Além disso, no editor de divisão condicional, você pode colocar uma expressão para pular linhas em branco:
por exemplo, coluna1!=""&&coluna2!=""&&coluna3!=""
ou você pode usar a Transformação de número de linha e, usando a divisão condicional, pode obter os primeiros registros (por exemplo, 10) com base na variável criada pelo componente.