The simplest way to merge multiple csv

Surely, many times had to combine combine multiple CSV files with same structures but different data and have resorted to simple but tedious ETL process such as multiple data inputs on Kettle or similars. We’ll leave here a very simple trick, with a simple command, we could merge as many CSV files as you want.

Copy in a folder all csv files as you want to merge. Go to console, with administrator role, go to folder. Then type

 copy *.csv merge_csv.csv

It will automatically create a file, merge_csv.csv,  as a result from the merge of many files included in our folder.

Sergio Martín
Más de 10 años de experiencia liderando, gestionando y ejectuando proyectos en diferentes ámbitos siempre bajo el foco tecnológico.

31 comments

  1. Si combine múltiples CSV´s a través del cmd y me genero un CSV de 3.2 gb, ¿existirá algún programa que lo pueda leer y manipular sin problemas?

  2. Hola Martha,

    un fichero CSV de mas de 2gb siempre va a ser algo problemático de manipular con software de escritorio, Notepad, Notepad++ o programas del estilo van a tardar bastante en abrirte el fichero y en guardar los cambios o movimientos que hagas en él.

    Uno de los mejores en esto es Ultraedit [http://www.ultraedit.com], si buscas un poco por la red lo encontrarás sin problema, pruébalo a ver que tal resulta.

    En cualquier caso, yo te recomiendo importarlo en una base de datos SQL cualquiera (MySQL por ejemplo) para poder trabajar de manera óptima con el fichero.

    Saludos 😉

  3. Hola,

    ¿existe la posibilidad de que te ponga cada nuevo csv en una nueva columna o en una nueva hoja? Necesito los datos en paralelo y esta solución es la más cercana por ahora.

    Muchas gracias.

    Saludos

    1. Hola Enrique,

      directamente de esta manera no lo creo. Un fichero CSV no deja de ser un fichero plano y, como tal, no puede tener más que una “hoja” de excel. Si que se me ocurre que, a través de una macro de excel, pudieras conseguir volcar las diferentes columnas de n ficheros CSV en un mismo fichero Excel.

      He googleado un poco y, si dominas algo de python, puedes probar esto

      http://stackoverflow.com/questions/14530748/combine-columns-from-several-csv-files-into-a-single-file

      En el ejemplo combinan varios ficheros csv con columnas en un único fichero csv con las columnas “pegadas” de manera correlativa.

      Si das con ello, soy todo oídos ojos!

      Saludos 😉

  4. Para OX no funciona cp *.csv unir.csv, pero me diste le idea para usar cat *.csv >> unir.csv, funciona bien, gracias!

    1. mil gracias! no me funcionaba ningun comando y probe cat *.txt >> unir.txt y funciono!!! me ahorre dos doas de re hacer el trabajo!!!!! gracias

  5. Hola, buenas tardes, muy util la info. Se puede hacer lo mismo desde PYTHON ? Alguien lo ha probado? Saludos

  6. Me ayudo mucho el tip junte varios csv en un total de siete millones de registros con un peso de 2,07 GB ya que el spss no me ayudo la opción fusionar.

    Gracias

  7. Hola Sergio,
    ante todo gracias por compartir!!!
    el único fallo que le encuentro es que al fusionar 4 CSV en mi caso, añade las 4 lineas de “cabeceras” como si fuesen filas de datos cuando realmente no lo son.
    Se te ocurre alguna forma de evitar esa casuística?

    1. Gracias Toni. Si, es un error conocido del proceso. Lo que yo hago es abrir con Notepad++ / Excel y reemplazar toda la fila por nada y luego borrar los registros vacios. Es un poco rollo, pero es rápido de hacer.

      Si nos vamos a un proceso más complejo, podríamos hacer algo así en batch. Abres un notepad y pegas esto

      @echo off
      cd /d “c:\csv”
      set first=true
      setlocal enabledelayedexpansion
      (for %%x in (*.csv) do (
      if !first!==true (
      type “%%x”
      echo.
      set first=false
      ) ELSE (
      more +1 “%%x”
      )
      ))> c:\csv\file\fichero_csv_resultante.csv

      y lo guardas en proceso.bat, por ejemplo.

      En la carpeta C:\csv tienes los ficheros csv y en la carpeta C:\csv\file\ te genera el resultado (para no tener el mismo fichero como parte del bucle de ficheros a combinar).

      Te debería dejar la primera de las cabeceras, pero no el resto.

      Prueba y me dices 😉

  8. Buenos días Sergio!

    Muy buena la solución…sin embargo en mi caso cada csv trae una sola columna con toda la info separada por pipes (columna 1|columna 2|..|columna n)…al ejecutar esto el sistema me concatenó lo del siguiente cvs en la misma fila (columna 1|columna 2|..|columna n csv 1columna 1|columna 2|…columna n csv2columna 1|columna 2|…|columna n csv3columna1| y asi con los demás)…..la idea en mi caso es que queden en filas independientes:
    columna 1|columna 2|..|columna n csv 1
    columna 1|columna 2|..|columna n csv 2
    columna 1|columna 2|..|columna n csv 3
    Esto se podría hacer?

    Millones de gracias!!!

    1. Hola Rosa,

      he probado a hacer el proceso con ficheros csv separados por pipes y realmente lo hace bien, concatena como está previsto.

      Captura

      Una pregunta, ¿puede ser que, en tus ficheros, solo tengas cabecera y una línea sin más? Si solo tienes cabecera y una línea, por favor, prueba a meterle una línea más a cada fichero, con un simple salto de línea es suficiente. Creo que puede ser este, el motivo por el que no lo está haciendo bien y no el tema del pipe.

      Espero que te sea de ayuda 😉

    1. Hola Erick,

      este proceso es únicamente para ficheros de texto plano. Los ficheros xlsx no se pueden combinar de esta manera, por eso te estará dando error el archivo unificado .

      Para hacer algo similar a esto, pero con ficheros xlsx, se me ocurre que podrías usar la librería pandas de python con la que, de maner sencilla, podrías combinarlos.

      Un saludo 😉

Leave a Reply

Your email address will not be published. Required fields are marked *