J'essaie de sauvegarder un résultat de requête d'environ 1 000 000 d'enregistrements dans MySQL Workbench.
Lorsque j'exécute SELECT, seuls 1000 enregistrements s'affichent (limite par défaut de MySQL Workbench). Je sais que je peux modifier la limite ou la supprimer, mais je ne veux pas que 1000000 enregistrements soient chargés dans le panneau de résultats (ce qui pourrait planter mon ordinateur?), Mais je veux enregistrer les résultats dans un fichier.
MySQL Workbench vous permet-il d'enregistrer les résultats d'une requête directement dans un fichier? Ou enregistrer l'ensemble des résultats au lieu des 1000?
Il est possible de modifier la limite de ligne du résultat de la requête ou de supprimer complètement la limite.
Allez dans Édition → Préférences → Éditeur SQL (onglet). Si vous ne trouvez pas Query Results, allez à SQL Queries (tab) à la place.
Localisez la section Query Results et décochez la case Limit Rows
Cliquez sur OK .
Relancez votre requête.
LOAD DATA INFILE
a un frère appelé SELECT ... INTO OUTFILE . Vous pouvez l'utiliser comme:
SELECT * FROM mytable
INTO OUTFILE '/tmp/mytable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Cette méthode n'utilisera pas de ressources inutiles dans l'interface utilisateur.
Comme @ florian l'a souligné: il créera cependant le fichier de sortie sur le serveur de base de données, pas sur la machine cliente.
Notez également que les cadres de sécurité comme SELinux ou AppArmor peuvent empêcher MySQL d'écrire fichiers en dehors du dossier standard - bases de données. Si vous rencontrez des erreurs autorisation refusée, même si le répertoire est accessible en écriture par l'utilisateur mysql
, il s'agit probablement de l'une d'entre elles.
Ajoutez simplement 'limit $ number' pour ajouter la clause SQL. si vous n'ajoutez pas de limite, les lignes renvoyées par défaut sont 1000.