una txt tabla por para importar convertir consola con comando archivo mysql database csv storage-engines

tabla - importar txt a mysql con php



Crear tabla mysql directamente desde el archivo CSV utilizando el motor de almacenamiento CSV? (12)

Acabo de descubrir csvkit , que es un conjunto de herramientas de línea de comandos de Unix para archivos CSV. Instalado en mi Mac con pip install csvkit y el comando fue:

csvsql --dialect mysql --snifflimit 100000 bigdatafile.csv > maketable.sql

Alternativamente, puede proporcionar una cadena de conexión db y puede cargar la tabla directamente.

Me acabo de enterar de que Mysql tiene un motor de almacenamiento CSV nativo que almacena datos en un archivo de valores separados por comas por tabla.

¿Es posible crear una tabla directamente desde un archivo CSV cargado, algo como:

CREAR USUARIOS DE LA MESA <RUTA / USUARIOS.CSV

donde users.csv es cargado por el usuario?


Además de las otras soluciones mencionadas, los usuarios de Mac pueden querer notar que SQL Pro tiene una opción de importación CSV que funciona bastante bien y es flexible: puede cambiar los nombres de columna y los tipos de campo en la importación. Elija una nueva tabla; de lo contrario, el diálogo inicial puede parecer desalentador.

SQL Pro: http://www.sequelpro.com Sequel Pro - aplicación de gestión de bases de datos para trabajar con bases de datos MySQL


Adopté el script de shiplu.mokadd.im para satisfacer mis necesidades. A quién le interesa:

#!/bin/bash if [ "$#" -lt 2 ]; then if [ "$#" -lt 1 ]; then echo "usage: $0 [path to csv file] <table name> > [sql filename]" exit 1 fi TABLENAME=$1 else TABLENAME=$2 fi echo "CREATE TABLE $TABLENAME ( " FIRSTLINE=$(head -1 $1) # convert lowercase characters to uppercase FIRSTLINE=$(echo $FIRSTLINE | tr ''[:lower:]'' ''[:upper:]'') # remove spaces FIRSTLINE=$(echo $FIRSTLINE | sed -e ''s/ /_/g'') # add tab char to the beginning of line FIRSTLINE=$(echo "/t$FIRSTLINE") # add tabs and newline characters FIRSTLINE=$(echo $FIRSTLINE | sed -e ''s/,/,//n//t/g'') # add VARCHAR FIRSTLINE=$(echo $FIRSTLINE | sed -e ''s/,/ VARCHAR(255),/g'') # print out result echo -e $FIRSTLINE" VARCHAR(255));"


El complemento de MySQL para Excel puede ayudarte.

http://dev.mysql.com/doc/refman/5.6/en/mysql-for-excel.html

Abra su archivo CSV en excel. Puede usar este complemento para exportar datos de Excel a una nueva tabla de servidor mysql remoto o local. Analizará sus datos (de 100 a 1000 filas) y creará un esquema de tabla correspondiente.



Esto no es posible. Para crear una tabla necesita un esquema de tabla. Lo que tienes es un archivo de datos. El esquema no se puede crear con él. Lo que puede hacer es verificar si su archivo tiene una fila de encabezado. En ese caso, puede crear una tabla usando esa fila de encabezado, pero manualmente.

Sin embargo, hay una forma de generar una declaración de tabla mediante un archivo de proceso por lotes, tal como lo describe John Swapceinski en la sección de comentarios del manual de MySQL .

Publicado por John Swapceinski el 5 de septiembre de 2011 5:33 a.m.
Crea una tabla usando el encabezado del archivo .csv:

#!/bin/sh # pass in the file name as an argument: ./mktable filename.csv echo "create table $1 ( " head -1 $1 | sed -e ''s/,/ varchar(255),/n/g'' echo " varchar(255) );"


Esto no es posible; sin embargo, puede sobrescribir un archivo de tabla existente. Pero asegúrese de que las terminaciones de línea en su archivo sean del estilo de Unix (que termina solo con / n), no del estilo de Windows (que termina en / r / n), ya sea que esté trabajando bajo Windows o no.


He creado una herramienta de línea de comandos de Windows que hace justamente eso.

Puede descargarlo aquí: http://commandline.dk/csv2ddl.htm

Uso:

C:/Temp>csv2ddl.exe mysql test.csv test.sql

O

C:/Temp>csv2ddl.exe mysql advanced doublequote comma test.csv test.sql


Me recomiendan usar MySQL Workbench donde están los datos de importación. Workbench permite al usuario crear una nueva tabla a partir de un archivo en formato CSV o JSON. Maneja el esquema de tabla y la importación de datos en unos pocos clics a través del asistente.

En MySQL Workbench, use el menú contextual en la lista de la tabla y haga clic en Table Data Import Wizard .

Más de la documentación de MySQL Workbench 6.5.1 Exportar datos de tabla e importar . Descargue MySQL Workbench aquí .


Sé que esto está un poco rancio como tema, pero hay una manera más fácil, SI, estás usando phpmyadmin como tu interfaz de usuario mysql.

1) Crea una base de datos con solo la configuración predeterminada.

2) Seleccione la base de datos.

3) Haga clic en "Importar" en la parte superior de la pantalla.

4) Seleccione CSV debajo de "Formato".

5) Elija las opciones apropiadas para su archivo csv (abra el archivo csv en un editor de texto y hágalo referencia para obtener las opciones ''apropiadas'').

Si lo solucionas, no hay problema, simplemente suelta la base de datos y vuelve a intentarlo.


Si estás bien con el uso de Python, los Pandas funcionaron muy bien para mí (csvsql colgado para siempre en mi caso). Algo como:

from sqlalchemy import create_engine import pandas as pd df = pd.read_csv(''/PATH/TO/FILE.csv'') # Optional, set your indexes to get Primary Keys df = df.set_index([''COL A'', ''COL B'']) engine = create_engine(''mysql://user:pass@host/db'', echo=False) df.to_sql(table_name, dwh_engine, index=False)

Además, esto no resuelve la parte del "uso del motor CSV", que era parte de la pregunta, pero que también podría ser útil.


si alguien está buscando solución de php:

Paquete: https://github.com/uzi88/PHP_MySQL_wrapper

$db = new MySQL_wrapper(MySQL_HOST, MySQL_USER, MySQL_PASS, MySQL_DB); $db->connect(); // this sample gets column names from first row of file //$db->createTableFromCSV(''test_files/countrylist.csv'', ''csv_to_table_test''); // this sample generates column names $db->createTableFromCSV(''test_files/countrylist1.csv'', ''csv_to_table_test_no_column_names'', '','', ''"'', ''//', 0, array(), ''generate'', ''/r/n''); /** Create table from CSV file and imports CSV data to Table with possibility to update rows while import. * @param string $file - CSV File path * @param string $table - Table name * @param string $delimiter - COLUMNS TERMINATED BY (Default: '','') * @param string $enclosure - OPTIONALLY ENCLOSED BY (Default: ''"'') * @param string $escape - ESCAPED BY (Default: ''/') * @param integer $ignore - Number of ignored rows (Default: 1) * @param array $update - If row fields needed to be updated eg date format or increment (SQL format only @FIELD is variable with content of that field in CSV row) $update = array(''SOME_DATE'' => ''STR_TO_DATE(@SOME_DATE, "%d/%m/%Y")'', ''SOME_INCREMENT'' => ''@SOME_INCREMENT + 1'') * @param string $getColumnsFrom - Get Columns Names from (file or generate) - this is important if there is update while inserting (Default: file) * @param string $newLine - New line delimiter (Default: /n) * @return number of inserted rows or false */ // function createTableFromCSV($file, $table, $delimiter = '','', $enclosure = ''"'', $escape = ''//', $ignore = 1, $update = array(), $getColumnsFrom = ''file'', $newLine = ''/r/n'') $db->close();