Saltar al contenido

En Powershell, ¿cuál es la mejor manera de unir dos tablas en una?

Este enunciado ha sido probado por nuestros expertos para garantizar la exactitud de nuestro contenido.

Solución:

Después de 1,5 años, el cmdlet que había pegado en la respuesta original ha sufrido tantas actualizaciones que ha quedado completamente obsoleto. Por lo tanto, he reemplazado el código y el Léame con un enlace a la última versión.

Unir-Objeto

Principales características:

  • Sintaxis intuitiva (similar a SQL)
  • Fusión inteligente de propiedades
  • Comandos de unión predefinidos para actualizar, fusionar y tipos de unión específicos
  • Tubería bien definida para los objetos de entrada (izquierda) y los objetos de salida (conserva la memoria cuando se usa correctamente)
  • Funciona aproximadamente un 40 % más rápido que Compare-Object en listas de objetos grandes
  • Admite objetos (personalizados), tablas de datos y diccionarios (por ejemplo, tablas hash) para la entrada
  • Propiedades inteligentes y expresiones de propiedades calculadas
  • Expresiones de relaciones personalizadas
  • Fácil instalación (abastecimiento de puntos)
  • Admite PowerShell para Windows (5.1) y PowerShell Core

El cmdlet Join-Object se puede descargar desde la Galería de PowerShell con el comando:

Install-Script -Name Join

El cmdlet Join-Object revela los siguientes comandos de proxy con sus propios (-JoinType y -Property) por defecto:

  • InnerJoin-Object (Alias InnerJoin o Join), combina los objetos relacionados
  • LeftJoin-Object (Alias LeftJoin), combina los objetos relacionados y agrega el resto de los objetos de la izquierda
  • RightJoin-Object (Alias RightJoin), combina los objetos relacionados y agrega el resto de los objetos correctos
  • FullJoin-Object (Alias FullJoin), combina los objetos relacionados y agrega el resto de los objetos izquierdo y derecho
  • CrossJoin-Object (Alias CrossJoin), combina cada objeto de la izquierda con cada objeto de la derecha
  • Update-Object (Alias Update), actualiza el objeto izquierdo con el objeto derecho relacionado
  • Merge-Object (Alias Merge), actualiza el objeto de la izquierda con el objeto de la derecha relacionado y agrega el resto de los nuevos objetos de la derecha (no relacionados)

Léame

El Léame completo (y el código fuente) está disponible en GitHub: https://github.com/iRon7/Join-Object

Instalación

Después de descargar (Install-Script -Name Join), el script puede ser invocado simplemente por abastecimiento de puntos:

. .Join.ps1

También puede considerar convertir el script en un módulo de PowerShell renombrándolo a un módulo de PowerShell (.psm1) y moverlo a una de las carpetas del módulo definidas en $env:PSModulePath. Para obtener más detalles, consulte: Cómo escribir un módulo de script de PowerShell.
Nota: los Import-Module Se requiere el comando para cargar los comandos del proxy.

Responder

Para responder al ejemplo real en la pregunta:

$reservations | LeftJoin $leases -On IP

IP          MAC          Name
--          ---          ----
192.168.1.1 001D606839C2 Apple
192.168.1.2 00E018782BE1 Pear
192.168.1.3 0022192AF09C Banana
192.168.1.4 0013D4352A0D

Ejemplos

Se pueden encontrar más ejemplos en las preguntas relacionadas de Stackoverflow en:

  • Combinar varios archivos CSV
  • Combine dos CSV: agregue CSV como otra columna
  • Comando CMD o Powershell para combinar (fusionar) las líneas correspondientes de dos archivos
  • ¿Puedo usar comandos SQL (como unir) en objetos en powershell, sin ningún servidor/base de datos SQL involucrado?
  • Comando CMD o Powershell para combinar (fusionar) las líneas correspondientes de dos archivos
  • Compare dos CSV, haga coincidir las columnas en 2 o más columnas, exporte columnas específicas de ambos CSV con PowerShell
  • Combinar dos archivos CSV mientras se agregan entradas nuevas y se sobrescriben las existentes
  • Fusionar dos CSV y luego reordenar las columnas en la salida
  • Combinar dos archivos CSV mientras se agregan entradas nuevas y se sobrescriben las existentes
  • Combine de manera eficiente conjuntos de datos de objetos grandes que tengan múltiples coincidencias keys

Y en el script de prueba Join-Object.

Lee Holmes escribió una publicación de blog sobre una función Unir-Objeto que hace lo que usted quiere. Lástima que aún no esté integrado en PowerShell.

Si conservas algún reparo o disposición de arreglar nuestro reseña eres capaz de escribir una anotación y con mucho gusto lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *