Pergunta

pacote

SSIS é apenas importando de txt arquivo para banco de dados SQL. quando fizemos o pacote estavam usando arquivo antigo e sua execução fine.The Got arquivo de origem de idade (10 colunas) o novo arquivo de origem tem 15 colunas. quando o arquivo fonte mudou sua falha. [Flat File Source [1]] Erro: Conversão de dados falhou. A conversão de dados para a coluna "Coluna 10" voltou valor de status 4 e status texto "texto foi truncado ou um ou mais caracteres não tinha correspondência na página de código de destino.". Variação nas colunas feitas um problema como resolver este em melhor forma? Se ambos os arquivos de formato novos e antigos precisam ser processadas com o mesmo pacote.

Graças

Foi útil?

Solução

Se entendi sua pergunta corretamente, você tem um arquivo (o mesmo nome do arquivo que eu presumo) que, ou tem o formato de arquivo velho ou novo e falha porque sua fonte de arquivo simples tem apenas o velho (10 coluna) esquema de arquivo de dados? Se este for o caso, eu iria criar uma variável booleana e chamá-lo algo como isOldFormat. Eu, então, usar uma tarefa de script em seu fluxo de controle para determinar se ele tem 10 ou 15 colunas. O pseudocódigo seria algo como isto:

1) Abra o arquivo simples 2) Conte as colunas com base no seu delimitador 3) Condição Statment:

Se Columns.Count = 10 isOldFormat = True Else Se Columns.Count = 15 isOldFormat = False Outro erro lance

Em seguida, eu iria criar mais fluxo de dados que teria o novo esquema de formato de arquivo (agora, basicamente, você tem dois fluxos de dados-um com o formato de arquivo de idade e outro com o novo).

Após esta etapa, você iria em seguida, arraste precedência restrição de sua tarefa de script com os dados recém-criados fluxo e um para os dados antigos fluir. Clicando duas vezes sobre a sua restrição predence, você iria em seguida, defina a propriedade operação avaliador Expressão e digite o @isOldFormat caixa Expressão == true para a restrição indo para o fluxo de dados que contém a fonte de arquivo simples de idade e @isOldFormat == false para o outro fluxo de dados. O que isso vai fazer só irá executar um ou outro fluxo de dados com base na variável que está definido na sua tarefa de script.

Espero que isso ajude.

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