Cómo combinar archivos CSV en PowerShell
-
El formato
CSV
-
Filtrar los archivos
.csv
en PowerShell -
Obtener cada objeto de archivo
.csv
en PowerShell - Fusionar el contenido de archivos CSV en PowerShell
- Escribir el contenido fusionado en un archivo de texto 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.
Contenido de username.csv
:
Contenido de username2.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
Vamos a verificar el contenido disponible en la $csvFileList
.
$csvFileList
Salida:
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:
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:
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.
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.