Combinar archivos CSV en PowerShell

Migel Hewage Nimesha 30 enero 2023
  1. El formato CSV
  2. Filtrar los archivos .csv en PowerShell
  3. Obtener cada objeto de archivo .csv en PowerShell
  4. Combinar el contenido de los archivos CSV en PowerShell
  5. Escriba el contenido fusionado en un archivo de texto en PowerShell
Combinar archivos CSV en PowerShell

Puede haber un requisito para fusionar varios archivos CSV y escribir los datos en un archivo de texto en PowerShell. Los cmdlets Import-Csv y Export-Csv se pueden utilizar para realizar esta operación.

El formato CSV

Hay varios tipos de formatos de archivo disponibles para diferentes propósitos. El CSV utiliza una estructura simple para almacenar datos.

Se puede utilizar para intercambiar datos entre diferentes programas. Como implica su nombre CSV (valores separados por comas), los datos están separados por comas.

La información almacenada en un archivo CSV tiene el siguiente aspecto.

UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson

El delimitador puede ser un espacio, un punto y coma o cualquier otro carácter.

Vamos a crear dos archivos csv que fusionaremos usando PowerShell.

Archivos CSV

username.csv contenido:

username archivo CSV

username2.csv contenido:

username2 archivo CSV

Filtrar los archivos .csv en PowerShell

Se recomienda utilizar el cmdlet Get-ChildItem para obtener todos los tipos de archivos .csv en la ubicación especificada. Se puede pasar el parámetro -Filter para filtrar los archivos con la extensión .csv.

La ruta de la carpeta a los archivos .csv puede ser diferente en su caso.

$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv

Revisemos el contenido disponible en $csvFileList.

$csvFileList

Producción:

Filtrar los archivos CSV en PowerShell

Obtener cada objeto de archivo .csv en PowerShell

Recuperemos cada objeto de archivo con su nombre completo. El cmdlet Select-Object se puede usar para recuperar cada objeto con sus propiedades expandidas.

Estamos canalizando la salida del paso anterior al comando Select-Object.

$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName

Cuando muestra la variable $csfFilesToImport, se puede ver que ambos objetos de archivo CSV están disponibles con el nombre completo.

$csfFilesToImport

Producción:

Obtener cada objeto de archivo CSV en PowerShell

Combinar el contenido de los archivos CSV en PowerShell

Como tenemos todos los archivos CSV, importemos el contenido de cada archivo. Esto fusionaría fácilmente el contenido con una fila de encabezado común.

Podemos usar el Import-CSV para construir objetos similares a una tabla a partir del contenido del archivo CSV canalizado.

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

Producción:

Combinar el contenido de los archivos CSV en PowerShell

La información se ha fusionado a partir de los dos archivos CSV proporcionados.

Escriba el contenido fusionado en un archivo de texto en PowerShell

Podemos transformar los objetos anteriores en cadenas CSV y guardarlas en un archivo de texto. El cmdlet Export-Csv está disponible para su uso.

Deberíamos usar el parámetro Append para asegurarnos de que el contenido no se reemplace ni se agregue.

$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append

Producción:

Esto debería crear un nuevo archivo de texto llamado merged.txt. El contenido de ese archivo se fusionaría a partir de los dos archivos CSV anteriores.

Escriba el contenido fusionado en un archivo de texto en PowerShell

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artículo relacionado - PowerShell CSV