web-dev-qa-db-fra.com

meilleur moyen d'importer un fichier csv de 500 Mo dans la base de données mysql?

J'ai un fichier csv de 500 Mo qui doit être importé dans ma base de données mysql.

J'ai écrit un script PHP dans lequel je peux télécharger le fichier csv. Il analyse les champs et effectue l'importation réelle. mais il ne peut gérer que de petits fichiers de max. 5MB. Donc, c'est 100 fichiers et en fait assez lent (téléchargement)

Y a-t-il un autre moyen? Je dois répéter ce processus tous les mois car les données du fichier changent tous les mois, ce qui représente environ 12 000 000 lignes.

5
mars

Si vous savez que le fichier contient un fichier CSV de forme uniforme (il n'y a pas de norme, vous voudrez probablement effectuer des tests approfondis avant d'importer des tables de production), vous pouvez alors ignorer PHP et utiliser les informations de MySQL LOAD DATA INFILE après le téléchargement des données sur le serveur.

(Si vous n'avez pas un accès immédiat à la console mysql sur le serveur, vous pouvez également le faire avec un script très simple PHP ou avec phpMyAdmin)

4
danlefree

La meilleure façon de faire serait:

  • en utilisant un outil comme [SQLyog] qui a une version "communautaire" gratuite, vous pouvez télécharger ici .
    Vous pourriez trouver utile SQLyog FAQ à propos de importation de données CSV

  • importez-le [via SSH] [4] (vous pouvez transférer le dump de la base de données en utilisant un FTP puis simplement exécuter
    mysql -p -u username database_name < file.sql

1
Boris Brdarić