Supongamos que tiene un archivo CSV con 2 campos: ID y correo electrónico. Tienes otro archivo con 2 campos: correo electrónico y nombre. ¿Cómo puede producir un archivo con los tres campos unidos en el correo electrónico?
Un poco más de detalle sobre la unión (es decir, interior, exterior, izquierda). ¿La lista de correo electrónico en el primer CSV es idéntica a la segunda lista? ¿O uno contiene más?
hyperslug
¿Serían útiles los ejemplos de archivos csv, junto con el sistema operativo que está utilizando?
Troggy
Creo que la primera y la segunda lista son idénticas. Estoy usando Linux ¡¡¡Por favor ayuda!!! ¡¡Gracias!! :)
crst53
1
¿Qué tan grandes son los datos?
Joshua
Respuestas:
24
Revisión3 :
Debe ordenar alfabéticamente ambas listas en el correo electrónico y luego unirse. Dado que el campo de correo electrónico es el segundo campo del archivo1 y el primer campo del archivo2:
-t,: ',' es el separador de campo
-k 2,2: clasificación de caracteres en el segundo campo
-k 1,1: clasificación de caracteres en el primer campo
-1 2: archivo 1, segundo campo
-2 1: archivo 2, primer campo
>: salida a archivo
produce
correo electrónico, ID, nombre
correo electrónico, ID, nombre
...
ordenado por correo electrónico alfabéticamente.
Tenga en cuenta que si falta algún correo electrónico en cualquiera de los archivos, se omitirá de los resultados.
CSV es más complicado que esto. El separador de campo se puede escapar, por ejemplo.
pguardiario
@hyperslug ¿puedo hacer una unión externa completa?
Abu Shoeb
Esto no funcionará si el CSV se combina con comillas / sin comillas, si la ID contiene una coma. Use esta solución solo para el procesamiento de una sola vez donde verifique el resultado. Pero recomiendo no usarlo para un script de nivel de producción.
herramienta asombrosa Incluso reconoció que uno de mis archivos tiene un delimitador diferente a ",".
D_K
6
Quizás sea excesivo, pero podría importar a una base de datos (por ejemplo, OpenOffice Base) como dos tipos de tablas y definir un informe que sea el resultado deseado.
Si la importación de CSV es un problema, entonces un programa de hoja de cálculo (por ejemplo, OpenOffice Calc) puede realizar la importación. El resultado se puede transferir fácilmente a la base de datos.
Como referencia futura, es posible que desee comenzar a jugar con AWK . Es un lenguaje de scripting muy simple que existe de alguna forma en todos los sistemas * nix y su única misión es la vida es la manipulación de bases de datos textuales delimitadas estándar. Con unas pocas líneas de script desechable, puede hacer algunas cosas muy útiles. El lenguaje es pequeño y elegante y tiene una mejor relación utilidad / complejidad que cualquier otra cosa que conozco.
awk no maneja las citas y los escapes (por ejemplo, tratar con, s en un archivo CSV separado) hasta donde yo sé. Si lo necesita, usar una biblioteca de manejo de CSV dedicado es más fácil; existen para muchos idiomas.
package main
import (
"flag"
"os"
"github.com/chrislusf/gleam"
"github.com/chrislusf/gleam/source/csv"
)
var (
aFile = flag.String("a", "a.csv", "first csv file with 2 fields, the first one being the key")
bFile = flag.String("b", "b.csv", "second csv file with 2 fields, the first one being the key")
)
func main() {
flag.Parse()
f := gleam.New()
a := f.Input(csv.New(*aFile))
b := f.Input(csv.New(*bFile))
a.Join(b).Fprintf(os.Stdout, "%s,%s,%s\n").Run()
}
Toma archivos CSV como tablas SQL y luego permite consultas SQL, lo que resulta en otro archivo CSV o JSON.
Para su caso, simplemente llame:
crunch -in tableA.csv tableB.csv -out output.csv \
"SELECT tableA.id, tableA.email, tableB.name
FROM tableA LEFT JOIN tableB USING (email)"
La herramienta necesita Java 8 o posterior.
Algunas de las ventajas:
Realmente obtienes soporte CSV, no solo "supongamos que los datos son correctos".
Puedes unirte en múltiples teclas.
Más fácil de usar y comprender que las joinsoluciones basadas.
Puede combinar más de 2 archivos CSV.
Puede unirse mediante expresiones SQL: los valores no tienen que ser los mismos.
Descargo de responsabilidad: escribí esa herramienta. Solía estar en desorden después de que Google Code se cerró, pero lo reviví y agregué nuevas funciones a medida que lo uso.
La extensión de archivo xlsx implica Microsoft Excel y creo que VLOOKUP también lo hace. Esta pregunta está etiquetada con Linux. ¿Microsoft Excel está disponible para Linux?
También puede usar una herramienta diseñada específicamente para unir archivos csv, como la que se encuentra en https://filerefinery.com
Las operaciones que actualmente admitimos son: Unir archivos csv. Es posible realizar el equivalente SQL de las operaciones de unión externas, internas, izquierda y derecha en dos archivos csv. La columna que se utilizará como clave de combinación en cada uno de los archivos es configurable.
Respuestas:
Revisión3 :
Debe ordenar alfabéticamente ambas listas en el correo electrónico y luego unirse. Dado que el campo de correo electrónico es el segundo campo del archivo1 y el primer campo del archivo2:
significado del parámetro
produce
ordenado por correo electrónico alfabéticamente.
Tenga en cuenta que si falta algún correo electrónico en cualquiera de los archivos, se omitirá de los resultados.
fuente
Use csvkit :
o
fuente
Quizás sea excesivo, pero podría importar a una base de datos (por ejemplo, OpenOffice Base) como dos tipos de tablas y definir un informe que sea el resultado deseado.
Si la importación de CSV es un problema, entonces un programa de hoja de cálculo (por ejemplo, OpenOffice Calc) puede realizar la importación. El resultado se puede transferir fácilmente a la base de datos.
fuente
Como referencia futura, es posible que desee comenzar a jugar con AWK . Es un lenguaje de scripting muy simple que existe de alguna forma en todos los sistemas * nix y su única misión es la vida es la manipulación de bases de datos textuales delimitadas estándar. Con unas pocas líneas de script desechable, puede hacer algunas cosas muy útiles. El lenguaje es pequeño y elegante y tiene una mejor relación utilidad / complejidad que cualquier otra cosa que conozco.
fuente
Use Ir: https://github.com/chrislusf/gleam
fuente
Prueba CSV Cruncher .
Toma archivos CSV como tablas SQL y luego permite consultas SQL, lo que resulta en otro archivo CSV o JSON.
Para su caso, simplemente llame:
La herramienta necesita Java 8 o posterior.
Algunas de las ventajas:
join
soluciones basadas.Descargo de responsabilidad: escribí esa herramienta. Solía estar en desorden después de que Google Code se cerró, pero lo reviví y agregué nuevas funciones a medida que lo uso.
fuente
Puede leer el archivo CSV con un programa de hoja de cálculo como LibreOffice y usar
VLOOKUP()
macro para buscar el nombre en el segundo archivo.fuente
También puede usar una herramienta diseñada específicamente para unir archivos csv, como la que se encuentra en https://filerefinery.com
fuente