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 / 239985
Accepted
BCM
BCM
Asked: 2019-06-07 09:11:31 +0800 CST2019-06-07 09:11:31 +0800 CST 2019-06-07 09:11:31 +0800 CST

SSIS cria novas pastas em tempo real ao gravar em uma conexão de arquivo simples

  • 772

Eu tenho um pacote SSIS destinado a gravar em vários arquivos, que são armazenados como

\\server\MainFolder\DynamicField1\DynamicField2\File.csv 

onde as subpastas DynamicField1 e DynamicField2 não existem necessariamente, mas são provenientes da variável i store para ConnectionString.

Quando executo o pacote da minha área de trabalho, recebo a mensagem:

[File [2]] Warning: The system cannot find the path specified.

O erro continua dizendo:

[File [2]] Error: Cannot open the datafile "\\server\folder\abcd\efgh\filename_20190606115901.csv".

Isso parece um bom nome de arquivo.

Tentei substituir as pastas dinâmicas por um traço para que o nome do arquivo ficasse assim:

\\server\folder\abcd - efgh - filename_20190606115901.csv

e isso realmente parecia funcionar. O problema é que haverá centenas de arquivos e seria melhor se eles pudessem ser organizados em dois níveis de subpastas.

Isso significa que não posso criar pastas em tempo real?

ssis ssis-2012
  • 2 2 respostas
  • 5658 Views

2 respostas

  • Voted
  1. HandyD
    2019-06-07T16:32:37+08:002019-06-07T16:32:37+08:00

    Você precisa usar uma Tarefa do Sistema de Arquivos e definir a Operação para Criar Diretório . Passe uma variável do caminho do arquivo sem o nome do arquivo e ele deve criar o diretório.

    Consulte este artigo do blog para obter um bom exemplo de criação de pastas a partir de caminhos dinâmicos.

    • 1
  2. Best Answer
    BCM
    2019-06-11T05:35:12+08:002019-06-11T05:35:12+08:00

    @JonathanFite estava certo, isso exigia o uso de uma tarefa de script.

    Além disso, a gravação no destino do Excel exigia o uso de um arquivo de modelo e, em seguida, uma tarefa do sistema de arquivos para copiá-lo diretamente para o recém-criado (se necessário). Vou responder para que haja um conjunto completo de etapas caso alguém venha procurar e tenha as mesmas habilidades mínimas de C# que eu. Eu juntei a maior parte disso de várias fontes, mas nunca vi um exemplo completo do que eu precisava.

    Para gravar em um novo destino do Excel dentro de pastas que talvez ainda não existam, são necessárias duas etapas.

    1. Crie a pasta se ela ainda não existir. (no C# System.IO, o CreateDirectory lida com isso perfeitamente e não substituirá um já existente.)
    2. Pegue um arquivo modelo do Excel e crie uma cópia dele com o nome desejado no local desejado com uma Tarefa do Sistema de Arquivos. Isso funciona perfeitamente em uma única etapa.

    Crie a pasta:

    Isso requer System.IO, então você precisa adicioná-lo aos NameSpaces na parte superior. Então é só colar:

    using System.IO;
    

    na região NameSpaces na parte superior. Em seguida, para criar a pasta, caso ela ainda não exista, adicione o abaixo na public void Main() área, substituindo o nome da variável pelo que você está passando como nome da pasta.

                // TODO: Add your code here
                string Path = Dts.Variables["User::FolderName"].Value.ToString();
                Directory.CreateDirectory(Path);
                Dts.TaskResult = (int)ScriptResults.Success;
    

    A grande parte deste código C#, é que ele não irá sobrescrever a pasta se ela já existir, que é exatamente o comportamento que eu queria.

    Criando o novo arquivo Excel:

    Você precisa primeiro criar um arquivo de modelo, com a "tabela" criada e definida. Então, basta carregar o mesmo tipo de dados em um local de arquivo codificado. Depois de carregar uma vez, limpe todos os dados e salve o arquivo em um local seguro. Em seguida, adicione esse local de arquivo a uma nova variável. Esta será a variável de origem para a Tarefa do Sistema de Arquivos.

    Agora tudo que você precisa fazer é adicionar o arquivo System Task. Defina o Destino para a variável para a qual você deseja que os arquivos reais sejam, e o arquivo de modelo será copiado automaticamente para o novo local e renomeado de uma só vez. A tarefa deve ser algo como o abaixo:

    insira a descrição da imagem aqui

    Na verdade, é um processo bastante simples.

    • 1

relate perguntas

  • Desenvolvimento de BI em Microsoft BI

  • Projeto de datawarehouse: dimensão combinada de data e hora versus dimensões e fusos horários separados de dia e hora

  • Posso fazer o downgrade dos pacotes SSIS para serem executados em versões mais antigas do SQL

  • Encontre material para melhorias no Microsoft BI

  • A maneira mais simples de restringir uma tarefa de processo de execução do SSIS

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