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?
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?
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:
sort -t , -k 2,2 file1.csv > sort1.csv
sort -t , -k 1,1 file2.csv > sort2.csv
join -t , -1 2 -2 1 sort1.csv sort2.csv > sort3.csv
significado del parámetro
-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.
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.
Use Ir: https://github.com/chrislusf/gleam
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()
}
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:
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:
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.
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.
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.