L'exportation de la table à partir d'Amazon RDS dans un fichier csv
J'ai une base de données mysql sur Amazon RDS, et je veux savoir comment faire pour exporter l'intégralité d'une table au format csv. J'utilise actuellement un serveur mysql sur Windows à la requête de l'Amazonie base de données, mais lorsque je tente d'exécuter une exportation, j'obtiens une erreur, probablement parce qu'il n'y a pas de serveur de fichiers dédié pour amazon RDS. Est-il une solution à cela?
mysql
's--batch
drapeau onglet sorties des champs séparés, avec le contenu échappé. C'est un format commun et ne devrait pas nécessiter de traduction .csv, qui lorsqu'elle est faite avecsed
qui pourrait entraîner la déformation des données en cas de coin.
Vous devez vous connecter pour publier un commentaire.
Sans doute que vous tentez d'exporter à partir d'un Amazon RDS base de données via un
SELECT ... INTO OUTFILE
requête, ce qui donne cet effet couramment rencontrés question, voir par exemple exporter une base de données au format CSV. Respectifs AWS équipe de réponse confirme votre hypothèse de l'absence d'accès au serveur de prévenir l'exportation comme ça, et suggère une autre approche, aussi bien via l'exportation de vos données au format CSV en sélectionnant les données dans la base de données mysql en ligne de commande client et de la tuyauterie de sortie pour reformater les données au format CSV, comme suit:Utilisateur fpalero fournit une solution de rechange et de la soi-disant approche la plus simple, si vous connaissez et spécifier les champs initiaux:
Bonne chance!
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql
a un--quick
option trop, rendant vider sur le disque immédiatement.LOAD DATA LOCAL INFILE dumpFile.sql REPLACE INTO TABLE schema.table_name IGNORE 1 LINES;
Je pense que j'ai besoin d'y ajouter le "délimitée par" et tous les autres trucs, mais je n'ai pas eu de chance jusqu'à présent.gsed 's/"/""/g;s/^/"/;s/$/"/;s/\t/","/g'
, qui est plus formelle concernant csv cahier des charges?concat(anything, NULL) is NULL
Je suis en utilisant Yii Framework sur EC2 de la connexion à RDS mySQL. La clé est d'utiliser fputcsv(). Le suivant fonctionne parfaitement, à la fois sur mon localhost ainsi que de la production.
SELECT * FROM table
... pas exactement de nice.Tout d'abord, Steffen réponse fonctionne dans la plupart des cas, j'ai jusqu'-voté et j'ai moi-même utilisé pour plusieurs années.
J'ai récemment rencontré certains des plus grands et plus complexes sorties où "sed" n'était pas assez et a décidé de venir avec un utilitaire simple à faire exactement cela.
- Je construire un module appelé sql2csv qui peuvent analyser les données en sortie de la base de la CLI:
Vous pouvez également utiliser le construit en CLI:
Plus d'infos https://github.com/gabfl/sql2csv
En supposant que MySQL RDS, une alternative est d'utiliser le mode batch qui sorties de valeurs délimitées par des tabulations et des évasions des retours à la ligne, tabulations et autres caractères spéciaux. Je n'ai pas encore frappé un outil d'importation CSV qui ne peut pas gérer les données séparées par des onglets. Ainsi, par exemple:
Comme l'a noté Halfgaar ci-dessus, le
--quick
option bouffées de chaleur immédiatement évite de mémoire d'erreurs pour les grandes tables. Pour citer des chaînes de caractères (recommandé), vous aurez besoin de faire un peu de travail supplémentaire dans votre requête:La
REPLACE
échappe à toute les guillemets doubles dans latext_column
valeurs. Je vous suggère aussi d'utiliser iso8601 chaînes pour les champs datetime, donc:Être conscient que CONCAT retourne NULL si vous avez une valeur de la colonne NULL.
J'ai couru sur certaines assez grandes tables avec des performances acceptables. 600M de lignes et de 23 GO de données a pris environ 30 minutes lors de l'exécution de la commande mysql dans le même VPC comme le RDS instance.