2009-08-05 21 views
13

Estoy buscando una definición de sintaxis, ejemplo, código de muestra, wiki, etc. para ejecutando un comando LOAD DATA LOCAL INFILE de python.MySQL LOAD DATA LOCAL Ejemplo de INFILE en python?

Creo que puedo usar mysqlimport también si está disponible, por lo que cualquier comentario (y fragmento de código) sobre cuál es la mejor ruta, es bienvenido. Una búsqueda en Google no está apareciendo demasiado en la forma de información actual

El objetivo en cualquier caso es el mismo: automatizar la carga de cientos de archivos con una convención de nomenclatura conocida & estructura de fechas, en una sola tabla MySQL.

David

+0

¿Está utilizando cualquier biblioteca en particular, como MySQL, Python o sqlalchemy? – dalloliogm

+0

Puedo usar cualquier cosa. En este momento, solo tengo importando MySQLdb en el script. –

Respuesta

22

Bueno, MySQLdb usando de pitón, yo uso esto:

connection = MySQLdb.Connect(host='**', user='**', passwd='**', db='**') 
cursor = connection.cursor() 
query = "LOAD DATA INFILE '/path/to/my/file' INTO TABLE sometable FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\\\'" 
cursor.execute(query) 
connection.commit() 

reemplazando el anfitrión/usuario/contraseña/db según sea apropiado para sus necesidades. Esto se basa en los documentos MySQL here, la instrucción LOAD DATA INFILE exacta dependería de sus requisitos específicos, etc. (tenga en cuenta que las sentencias FIELDS TERMINATED BY, ENCLOSED BY y ESCAPED BY serán específicas del tipo de archivo que está intentando leer en)

+0

En mi caso, solo me faltaba la confirmación() al final. Resulta que esto es necesario después de un DATOS DE CARGA o de lo contrario la transacción se pierde. –

+0

Desearía poder arrancar dos veces para el 'connection.commit()' que no se muestra en muchos lugares –

+0

Precisamente. En la mayoría de los lugares, la cosa 'commit' no se menciona, por lo que simplemente no funciona. – SexyBeast

0

También puede obtener los resultados para la importación añadiendo las siguientes líneas después de su consulta:

results = connection.info() 
Cuestiones relacionadas