J'importe des données de 20000 lignes à partir d'un fichier CSV dans Mysql.
Les colonnes du CSV sont dans un ordre différent de celui des colonnes de la table MySQL. Comment attribuer automatiquement des colonnes correspondant aux colonnes de la table Mysql?
Quand j'exécute
LOAD DATA INFILE'abc.csv' INTO TABLE abc
cette requête ajoute toutes les données à la première colonne.
Veuillez suggérer une syntaxe automatique pour l'importation de données dans Mysql.
mysql
csv
import
load-data-infile
MANJEET
la source
la source
Réponses:
Vous pouvez utiliser la commande LOAD DATA INFILE pour importer le fichier csv dans la table.
Vérifiez ce lien MySQL - LOAD DATA INFILE .
Pour les utilisateurs de MySQL 8.0:
L'utilisation du
LOCAL
mot clé hold security risk et à partir de MySQL 8.0, laLOCAL
capacité est définieFalse
par défaut. Vous pourriez voir l'erreur:Vous pouvez l'écraser en suivant les instructions de la documentation . Sachez qu'un tel écrasement ne résout pas le problème de sécurité, mais reconnaît simplement que vous êtes conscient et disposé à prendre le risque.
la source
IGNORE 1 LINES
que fait exactement ici? Merci d'avance.Vous devez probablement définir le
FIELDS TERMINATED BY ','
ou quel que soit le délimiteur.Pour un fichier CSV, votre déclaration doit ressembler à ceci:
la source
Avant d'importer le fichier, vous devez préparer les éléments suivants:
Supposons que nous ayons le tableau suivant:
CRÉER UNE TABLE À L'AIDE DE LA QUESTION SUIVANTE:
Si tout va bien. Veuillez exécuter la requête suivante pour LOAD DATA FROM CSV FILE:
Si tout a été fait. vous avez exporté les données du CSV vers la table avec succès
la source
Syntaxe:
Voir cet exemple:
la source
Insérer en masse plus de 7000000 enregistrements en 1 minute dans la base de données (requête ultra-rapide avec calcul)
RRP et RRP_nl et RRP_bl ne sont pas en csv mais nous sommes calculés et après insérer cela.
la source
Si vous exécutez à
LOAD DATA LOCAL INFILE
partir du shell Windows et que vous devez utiliserOPTIONALLY ENCLOSED BY '"'
, vous devrez faire quelque chose comme ceci afin d'échapper correctement les caractères:la source
supposons que vous utilisez xampp et phpmyadmin
vous avez le nom de fichier «ratings.txt» le nom de la table «les évaluations» et le nom de la base de données «films»
si votre xampp est installé dans "C: \ xampp \"
copiez votre fichier "ratings.txt" dans le dossier "C: \ xampp \ mysql \ data \ movies"
J'espère que cela peut vous aider à omettre votre erreur si vous faites cela sur localhost
la source
Vous pouvez charger des données à partir d'un fichier csv ou texte. Si vous disposez d'un fichier texte avec des enregistrements d'une table, vous pouvez charger ces enregistrements dans la table. Par exemple, si vous avez un fichier texte, où chaque ligne est un enregistrement avec les valeurs de chaque colonne, vous pouvez charger les enregistrements de cette façon.
table.sql
table.txt
--exemple sur Windows
la source
J'obtenais le code d'erreur: 1290. Le serveur MySQL fonctionne avec l'option --secure-file-priv donc il ne peut pas exécuter cette instruction
Cela a fonctionné pour moi sur Windows 8.1 64 bits en utilisant wampserver 3.0.6 64 bits.
Modification du fichier my.ini depuis C: \ wamp64 \ bin \ mysql \ mysql5.7.14
Supprimer l'entrée secure_file_priv c: \ wamp64 \ tmp \ (ou quel que soit le répertoire que vous avez ici)
Tout arrêté -exit wamp etc.- et tout redémarré; puis punt mon fichier cvs sur C: \ wamp64 \ bin \ mysql \ mysql5.7.14 \ data \ u242349266_recur (le dernier répertoire étant le nom de ma base de données)
exécuté LOAD DATA INFILE 'myfile.csv'
ANCIENS EN TABLE
CHAMPS TERMINÉS PAR ','
ENFERMÉ PAR '"'
LIGNES TERMINÉES PAR '\ r \ n'
IGNORER 1 LIGNES
... et VOILA !!!
la source
Vous pouvez essayer d'insérer comme ceci:
la source
De nos jours (fin 2019), je préfère utiliser un outil comme http://www.convertcsv.com/csv-to-sql.htm Je vous ai beaucoup de lignes que vous pouvez exécuter des blocs partitionnés en sauvant les erreurs de l'utilisateur lorsque csv provient une feuille de calcul de l'utilisateur final.
la source