Gestão de ficheiros CSV usando Importação/Exportação-CSV em Powershell

br> Na série PowerShell, estamos a estudar a possibilidade de trabalhar com ficheiros em PowerShell. Os primeiros tipos de ficheiros que estamos a cobrir e que são utilizados são tipos de ficheiros CSV(comma separated values). Vamos analisar dois importantes cmdlets import-csv/export-csv que são amplamente utilizados durante o trabalho com CSV.

Comecemos com a extensão do ficheiro CSV, uma vez que esta é a mais básica. Faremos uso do exemplo anterior, onde armazenamos os processos em execução actualmente em ficheiro:

#Defining file for export$exportedFile = 'C:\temp\exportedProcesses.csv'#Exporting as CSV - basicGet-Process | Export-Csv $exportedFile#Opening the filepsedit $exportedFile

br>Por defeito, Export-Csv escreverá um ficheiro delimitado por vírgulas utilizando codificação ASCII e substituirá completamente qualquer ficheiro utilizando o mesmo nome.
Export-Csv pode ser utilizado para adicionar linhas a um ficheiro existente utilizando o parâmetro Append. Quando o parâmetro Append é utilizado, o objecto de entrada deve ter cada um dos campos listados no cabeçalho CSV ou será lançado um erro a menos que o parâmetro Force seja utilizado.
Após executar este simples exemplo, terá o ficheiro CSV aberto à sua frente, que consiste em todos os processos e cada valor, separados por vírgulas. E é isso que na realidade significa CSV, valores separados por vírgulas. A vantagem de trabalhar com ficheiros CSV é que receberá de volta objectos personalizados em forma de tabela, que podem ser facilmente filtrados. Este tipo de ficheiro faz sentido, especialmente para objectos de dados simples.
Export-Csv pode ser instruído para excluir este cabeçalho usando o parâmetro NoTypeInformation:

Get-Process | Export-Csv processes.csv -NoTypeInformation 

br>Importar é muito simples.

#Importing CSV file$data = Import-Csv $exportedFile#Showing content$data | Out-GridView

br> Valores separados por vírgulas (CSV) os ficheiros são texto simples. Aplicações como o Microsoft Excel podem trabalhar com ficheiros CSV sem alterar o formato do ficheiro, embora as características avançadas do Excel não possam ser guardadas num ficheiro CSV.
Por defeito, Import-Csv espera que a entrada tenha uma linha de cabeçalho, que seja delimitada por vírgulas, e que utilize codificação de ficheiros ASCII. Se algum destes itens for diferente, os parâmetros de comando podem ser utilizados. Por exemplo, um separador pode ser definido como o delimitador.

Import-Csv TabDelimitedFile.tsv -Delimiter `t 

Um tick seguido de t (`t) é utilizado para representar o carácter do separador no PowerShell.

Dados importados utilizando Import-Csv serão sempre formatados como uma string. Se Import-Csv for utilizado para ler um ficheiro contendo o seguinte texto, cada um dos números será tratado como uma string.

#Showing its type$data | Get-Member # TypeName: CSV:System.Diagnostics.Process$data.GetType() # PSCustomObject$data.GetType() # System.Array

É interessante ver aqui que tipo está a ser recuperado depois de importar o ficheiro CSV. O cmdlet Get-Member no próprio objecto $data mostra que se trata de um ficheiro CSV, e os objectos exportados são do tipo System.Diagnostics.Process. Mas, depois de ter dado uma vista de olhos dedicada ao primeiro objecto e ao tipo de contentor, reconhecerá que o objecto importado já não pode ser utilizado como um processo. Tornou-se um PSCustomObject. No entanto, é ainda uma melhoria em relação à sua exportação como um simples fio. Pode facilmente importá-lo e utilizá-lo como um simples armazenamento de dados.
O próximo grande benefício ao trabalhar com ficheiros CSV é que pode torná-los editáveis com o Microsoft Excel. Para o conseguir, basta mudar o delimitador de vírgula (,) para ponto e vírgula (;), pois este é o delimitador padrão para ficheiros Excel. Pode usar a bandeira dedicada -Delimiter para esta tarefa.

#Exporting as CSV with specified delimiter ';'Get-Process | Export-Csv C:\temp\exportedProcesses.csv -Delimiter ';'#Importing the data$data = Import-Csv C:\temp\exportedProcesses.csv -Delimiter ';'#Showing the data$data | Out-GridView

Tenha cuidado, pois este é um comportamento específico da cultura. Para evitar os problemas com as diferentes culturas, pode usar a bandeira -UseCulture.
Agora, a edição com Excel é possível. Para demonstrar o poder do PowerShell, vamos agora abrir o ficheiro com Excel via PowerShell e o uso do próprio ComObjecto do Excel.

#Create ComObject for Excel$excel = New-Object -ComObject Excel.Application#Make it visible$excel.Visible = $true#Open the CSV file$excel.Workbooks.Open($exportedFile)

Pode tentar abrir um ficheiro CSV que foi exportado com a vírgula e o delimitador de ponto e vírgula para ver a diferença entre as duas abordagens por si mesmo.
Conclusão:
Já cobrimos uma secção para compreender o trabalho com o CSV. Cobrimos os cmdlets export-csv para enquanto tentamos exportar ficheiros como CSV. São utilizados principalmente durante a elaboração de relatórios que podem ser visualizados directamente usando excel. Utilizei pessoalmente Export-CSV e import-CSV enquanto trabalhava com a plataforma azure, que cobriremos alguns outros dias em detalhe.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *