¿Cómo importar un archivo csv en MySQL workbench?

88

Tengo un archivo CSV. Contiene 1,4 millones de filas de datos, por lo que no puedo abrir ese archivo csv en Excel porque su límite es de aproximadamente 1 millón de filas.

Por lo tanto, quiero importar este archivo en MySQL workbench. Este archivo csv contiene columnas como

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Estoy tratando de crear una tabla en MySQL workbench llamada "ficticia" que contiene columnas como

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

El archivo CSV se llama model.csv. Mi código en el banco de trabajo es así:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

pero recibo un error como model.CSV file not found

vps
fuente
También puede hacerlo en dbForge Studio para el asistente de importación de MySQL . Genera automáticamente una tabla de tal manera prnt.sc/e5iqy1
Devart

Respuestas:

139

Supongo que te falta la cláusula ENCLOSED BY

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Y especifique la ruta completa del archivo csv

Load Data Infile - documentación de MySQL

Packet Tracer
fuente
1
gracias, no recibo ningún error en este comando. pero recibo un error como el archivo model.csv no encontrado. ese archivo se almacena en el escritorio de mi sistema
vps
El archivo csv se almacena en el escritorio de mi sistema
vps
5
ACTUALIZACIÓN: Si se importan cadenas con caracteres no estándar, es útil señalar la necesidad de "CHARACTER SET utf8" para la declaración: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' líneas terminadas en '\ n'; La tabla / columnas de destino también deben establecerse en utf-8
ılǝ
1
Tampoco se debe olvidar la palabra clave LOCAL, su consulta es la correcta
Brij Raj Singh - MSFT
2
Trabajó "tipo de" en Windows 7 usando mysql workbench 6.2. Tuve que usar barras dobles '//path//to//your//csv//file//model.csv'y todos los campos que contenían barras simples se rompieron.
576i
69

En caso de que tenga un conjunto de datos más pequeño, una forma de lograrlo mediante GUI es:

  1. Abrir una ventana de consulta
  2. SELECCIONAR * DE [table_name]
  3. Seleccione Importar en la barra de menú.
  4. Presione Aplicar en la parte inferior derecha debajo de la cuadrícula de resultados

ingrese la descripción de la imagen aquí

Referencia: http://www.youtube.com/watch?v=tnhJa_zYNVY

Gabriel Chung
fuente
13
Solo una nota. Esa opción de importación solo está disponible en máquinas con Windows. Los complementos aparentemente todavía están basados ​​en .Net, por lo que no funcionan en Linux o Mac.
BrianC
8
No olvide presionar Aplicar después de importar.
Steve Pitchers
7
Cuidado, esto puede ser muy lento. Tomó un par de horas no a 25.000 filas
Rob Sedgwick
2
El tiempo parece depender mucho del hardware. La computadora de mi casa se ahogó completamente en 10K filas. Mi computadora de trabajo acaba de importar 243 mil filas con aproximadamente 200 columnas en 85 segundos.
KathyA.
2
@BrianC Parece que este ya no es el caso, me aparece en la versión de Linux.
Jammerx2
21

En el navegador bajo ESQUEMAS, haga clic derecho en su esquema / base de datos y seleccione "Asistente de importación de datos de tabla"

También funciona para mac.

DannyPadilla
fuente
Esto funcionó para mí en Ubuntu 18.04 al crear una nueva tabla desde el csv. Sin embargo, no pude agregar datos a una tabla existente usando este método.
LP Whigley
2

Puede usar el Asistente de importación de datos de tablas MySQL

Shyju M
fuente
Gracias :) resolvió mi problema. podemos cambiar el nombre de la columna más tarde desde la interfaz de usuario (no para expertos), una vez que se importe ...
vipul kumawat
Intenté muchas cosas que no funcionaron, pero esto finalmente funcionó. Funcionó incluso sin alterar la configuración de archivos de datos locales. Supongo que MySQL está ejecutando inserciones en su lugar.
Peppershaker
1

Por el momento no es posible importar un CSV (usando MySQL Workbench) en todas las plataformas, ni se aconseja si dicho archivo no reside en el mismo host que el host del servidor MySQL.

Sin embargo, puede utilizar mysqlimport .

Ejemplo:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

En este ejemplo, mysqlimportse le indica que cargue todos los archivos denominados "ventas" con una extensión que comienza con "part_". Esta es una forma conveniente de cargar todos los archivos creados en el ejemplo "dividido". Utilice la opción --compress para minimizar el tráfico de red. La opción --fields-terminated-by = ',' se usa para archivos CSV y la opción --local especifica que los datos entrantes se encuentran en el cliente. Sin la opción --local, MySQL buscará los datos en el host de la base de datos, así que siempre especifique la opción --local.

Hay información útil sobre el tema en la documentación de AWS RDS .

Panagiotis Moustafellos
fuente
0

Si el servidor reside en una máquina remota, asegúrese de que el archivo esté en la máquina remota y no en su máquina local.

Si el archivo está en la misma máquina donde está el servidor mysql, asegúrese de que el usuario mysql tenga permisos para leer / escribir el archivo, o copie el archivo en el directorio del esquema mysql:

En mi caso en ubuntu fue: /var/lib/mysql/db_myschema/myfile.csv

Además, no es relativo a este problema, pero si tiene problemas con las nuevas líneas, use sublimeTEXT para cambiar los finales de línea al formato WINDOWS, guarde el archivo y vuelva a intentarlo.

Eduardo Chongkan
fuente
0

Parece un poco complicado ya que realmente me había molestado durante mucho tiempo.

Solo necesita abrir la tabla (haga clic derecho en "Seleccionar filas - Límite de 10000") y se abrirá una nueva ventana. En esta nueva ventana, encontrará "icono de importación".

Chen
fuente