Combinar archivos CSV en PowerShell
-
El formato
CSV
-
Filtrar los archivos
.csv
en PowerShell -
Obtener cada objeto de archivo
.csv
en PowerShell - Combinar el contenido de los archivos CSV en PowerShell
- Escriba 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
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.
username.csv
contenido:
username2.csv
contenido:
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:
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:
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:
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.
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.