Cómo combinar archivos CSV en PowerShell

  1. El formato CSV
  2. Filtrar los archivos .csv en PowerShell
  3. Obtener cada objeto de archivo .csv en PowerShell
  4. Fusionar el contenido de archivos CSV en PowerShell
  5. Escribir el contenido fusionado en un archivo de texto en PowerShell
Cómo 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 pueden ser utilizados para realizar esta operación.

El formato CSV

Existen 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 su nombre CSV (valores separados por comas) implica, los datos están separados por comas.

La información almacenada en un archivo CSV se ve como sigue.

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, punto y coma o cualquier otro carácter.

Creamos dos archivos csv que vamos a fusionar usando PowerShell.

Archivos CSV

Contenido de username.csv:

archivo CSV de nombres de usuario

Contenido de username2.csv:

archivo CSV username2

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

Vamos a verificar el contenido disponible en la $csvFileList.

$csvFileList

Salida:

Filtrar los archivos CSV en PowerShell

Obtener cada objeto de archivo .csv en PowerShell

Vamos a recuperar cada objeto de archivo con su nombre completo. Se puede usar el cmdlet Select-Object para recuperar cada objeto con sus propiedades ampliadas.

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

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

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

$csfFilesToImport

Salida:

Obtener cada objeto de archivo CSV en PowerShell

Fusionar el contenido de archivos CSV en PowerShell

Dado que 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 Import-CSV para construir objetos tipo tabla a partir de los contenidos de archivos CSV canalizados.

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

Salida:

Combinar el contenido de archivos CSV en PowerShell

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

Escribir 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 usar.

Debemos usar el parámetro Append para asegurar que el contenido no sea reemplazado y se agregue.

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

Salida:

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

Escriba el contenido combinado en un archivo de texto en PowerShell

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
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