Como Importar Arquivos CSV Para um Array no PowerShell

  1. O Arquivo de Valores Separados por Vírgulas
  2. Use o Cmdlet Import-CSV para Importar Arquivos CSV em um Array no PowerShell
  3. Use os Cmdlets Get-Content e ConvertFrom-Csv para Importar Arquivos CSV em um Array no PowerShell
  4. Use a Classe System.IO.File e o Cmdlet ConvertFrom-Csv para Importar Arquivos CSV em um Array no PowerShell
  5. Conclusão
Como Importar Arquivos CSV Para um Array no PowerShell

Os arquivos CSV (Valores Separados por Vírgulas) servem como um formato de dados fundamental, encapsulando informações em uma estrutura tabular com campos separados por vírgulas. Embora comumente associados a softwares de planilhas, sua natureza simples, mas versátil, encontra aplicação em várias plataformas, incluindo o PowerShell.

Na scriptagem do PowerShell, ler e processar dados CSV de forma eficiente é crucial para tarefas de automação e manipulação de dados. Este artigo explora três métodos—Import-CSV, Get-Content cmdlets e a classe System.IO.File com o cmdlet ConvertFrom-Csv—para importar arquivos CSV em arrays, oferecendo insights sobre seu uso, vantagens e cenários de aplicação.

O Arquivo de Valores Separados por Vírgulas

Um arquivo CSV (Valores Separados por Vírgulas) contém dados ou conjuntos separados por vírgulas. Isso permite que os dados sejam salvos em um formato tabular.

Os usuários podem utilizar arquivos CSV com a maioria dos programas de planilhas, como Microsoft Excel ou Google Planilhas. No entanto, quando os abrimos em softwares que não atendem a formatos tabulares, os dados estarão separados por vírgulas, que o PowerShell pode usar para separar valores em arrays.

Por exemplo, abaixo está um formato CSV bruto com duas colunas.

Arquivo users.csv:

Name,Salary
John,1000
Paul,2000
Mary,1500
Matt,3000

Use o Cmdlet Import-CSV para Importar Arquivos CSV em um Array no PowerShell

O comando Import-CSV no Windows PowerShell cria um objeto tipo tabela semelhante a objetos personalizados a partir dos itens apresentados no arquivo CSV acima.

No script do Windows PowerShell abaixo, usaremos o comando Import-CSV para atribuir os dados do arquivo CSV a uma variável do tipo array do Windows PowerShell.

$users = Import-Csv path\users.csv
$users

Começamos usando o cmdlet Import-Csv para ler os dados de um arquivo CSV localizado em path\users.csv. Este cmdlet lê o conteúdo do arquivo CSV e o converte em um objeto PowerShell.

Em seguida, atribuímos os dados importados do CSV à variável $users. Esta variável agora contém o conteúdo do arquivo CSV como um array de objetos, com cada objeto representando uma linha do arquivo CSV.

Uma vez executado, podemos ver os valores do arquivo CSV transformados em uma lista de formato chamada objeto ArrayList.

Saída:

ler arquivos csv em array no powershell - saída 1

Acessar Elementos Após Importar Arquivos CSV em um Array no PowerShell

Quando importamos um arquivo CSV usando Import-Csv no PowerShell, cada linha do arquivo CSV é representada como um objeto, e todo o dado CSV é armazenado como um array desses objetos. Para acessar linhas individuais ou elementos dentro dos dados CSV, usamos a indexação de arrays.

$users = Import-Csv path\users.csv
$users[0]

Começamos importando um arquivo CSV chamado users.csv localizado no caminho especificado. Usamos o cmdlet Import-Csv para esse propósito.

Esse cmdlet lê o conteúdo do arquivo CSV e o converte em um objeto PowerShell.

Após importar o arquivo CSV, queremos acessar a primeira linha dos dados CSV. Conseguimos isso usando a indexação de arrays.

No PowerShell, a indexação de arrays começa em 0, então $users[0] refere-se ao primeiro elemento (ou linha) no array $users.

Saída:

ler arquivos csv para array no powershell - saída 2

Podemos consultar a propriedade de um determinado elemento do array do Windows PowerShell tratando o nome da coluna como um nome de propriedade, como no exemplo abaixo.

$users = Import-Csv path/users.csv
$users[0].Name

Depois de importar o arquivo CSV e armazenar seu conteúdo na variável $users, prosseguimos para acessar uma propriedade específica da primeira linha dos dados CSV. Neste caso, queremos recuperar o valor da propriedade Name da primeira linha.

Ao especificar $users[0].Name, estamos acessando a propriedade Name do objeto que representa a primeira linha dos dados CSV. Isso nos permite recuperar o valor associado à coluna Name no arquivo CSV para a primeira linha.

Saída:

ler arquivos csv para array no powershell - saída 3

Podemos contar o número de elementos em um array usando a propriedade Count abaixo.

$users = Import-Csv path/users.csv
$users.Count

Após importar o arquivo CSV e armazenar seu conteúdo na variável $users, queremos determinar o número de itens (linhas) no array.

Ao usar $users.Count, estamos acessando a propriedade Count do array armazenado na variável $users. Esta propriedade retorna o número de itens (linhas) no array.

Saída:

ler arquivos csv para array no powershell - saída 4

Use os Cmdlets Get-Content e ConvertFrom-Csv para Importar Arquivos CSV em um Array no PowerShell

Uma abordagem direta para realizar essa tarefa é usar os cmdlets Get-Content e ConvertFrom-Csv. Este método nos permite ler o conteúdo de um arquivo CSV como texto usando Get-Content e, em seguida, convertê-lo em objetos PowerShell usando ConvertFrom-Csv, criando assim um array de objetos representando cada linha dos dados CSV.

$content = Get-Content -Path "C:\path\data.csv"
$array = $content | ConvertFrom-Csv
$array

Começamos usando Get-Content para ler o conteúdo do arquivo CSV localizado no caminho especificado e armazená-lo na variável $content.

Em seguida, enviamos o conteúdo do arquivo CSV armazenado em $content para ConvertFrom-Csv. Este cmdlet converte o texto CSV em objetos PowerShell e os armazena na variável $array.

Uma vez executado, podemos ver os valores do arquivo CSV transformados em uma lista de formato chamada objeto ArrayList.

Saída:

ler arquivos csv para array no powershell - saída 5

Use a Classe System.IO.File e o Cmdlet ConvertFrom-Csv para Importar Arquivos CSV em um Array no PowerShell

A classe System.IO.File permite a leitura dos conteúdos do arquivo CSV, que são então transformados em objetos PowerShell usando o cmdlet ConvertFrom-Csv. Este método não apenas fornece flexibilidade, mas também garante facilidade de uso, permitindo que os usuários gerenciem dados CSV de maneira simples em seus scripts do PowerShell.

$content = [System.IO.File]::ReadAllText("C:\path\data.csv")
$array = $content | ConvertFrom-Csv
$array

Usamos [System.IO.File]::ReadAllText para ler o conteúdo do arquivo CSV localizado no caminho especificado e armazená-lo na variável $content.

Em seguida, enviamos o conteúdo do arquivo CSV armazenado em $content para ConvertFrom-Csv. Este cmdlet converte o texto CSV em objetos PowerShell e os armazena na variável $array.

Uma vez executado, podemos ver os valores do arquivo CSV transformados em uma lista de formato chamada objeto ArrayList.

Saída:

ler arquivos csv em array no powershell - saída 6

Conclusão

Na scriptagem do PowerShell, lidar com dados CSV de forma integrada é imperativo para uma automação e processamento de dados eficazes. Ao aproveitar os cmdlets Import-CSV, Get-Content ou a classe System.IO.File com o cmdlet ConvertFrom-Csv, os usuários podem ler eficientemente arquivos CSV em arrays, capacitando-os a manipular dados com facilidade e flexibilidade.

Seja extraindo insights de grandes conjuntos de dados ou automatizando tarefas repetitivas, esses métodos fornecem ferramentas poderosas para desenvolvedores do PowerShell. Com uma clara compreensão dessas técnicas, os usuários podem aproveitar o poder dos dados CSV dentro de seus scripts, simplificando fluxos de trabalho e aumentando a produtividade.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artigo relacionado - PowerShell Array

Artigo relacionado - PowerShell CSV