HOWTO · PowerShell

Cómo combinar archivos CSV en PowerShell

Puede haber un requisito para combinar 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.

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