MySQL bulk insert à partir de fichiers de données CSV
J'ai quelques fichiers de données CSV que je veux importer dans mySQL. Je voudrais faire l'insérer dans un script shell, de sorte qu'il peut être automatisée. Cependant, je suis un peu fatigué d'avoir le nom d'utilisateur et le mot de passe en texte clair dans le script
J'ai les questions suivantes:
- Je suis mal à l'aise avec l'idée d'un uname/pwd en texte clair dans le script (il n'y a de toute façon de contourner cela, ou suis-je trop paranoïaque)?. Peut-être que je peux créer un utilisateur avec seulement INSÉRER privelege pour la table à insérer?
- La table de base de données (dans les données brutes importées) a une clé unique basé sur les colonnes de la table. Il est également possible qu'il peut y avoir des doublons dans les données que j'essaie d'importer. Plutôt que mySQL barfing (c'est à dire la totalité de l'insertion échoue), je voudrais, au contraire, veulent être en mesure de dire à mySQL de SOIT
(a) mise à JOUR de la ligne avec les nouvelles données OU
(b) d'IGNORER la ligne en double.
Quel que soit le paramètre-je choisir serait pour l'ENSEMBLE de l'importation, et non ligne par ligne. Existe-il des drapeaux etc je peux passer à mysql pour qu'il se comporte comme (a) OU (b) ci-dessus
- Quelqu'un peut-il suggérer un point de départ sur la façon d'écrire un tel (bourne) script shell?
OriginalL'auteur morpheous | 2010-05-11
Vous devez vous connecter pour publier un commentaire.
Vous devriez lire à propos de mysqlimport, qui est un outil de ligne de commande fourni avec MySQL. Cet outil est le moyen le plus rapide de chargement en masse de données CSV.
L'outil a deux options,
--replace
et--ignore
pour gérer la duplication de clé de conflits.Concernant la sécurité et éviter de mettre le mot de passe en clair dans le script, vous pouvez également utiliser le
MYSQL_PWD
variable d'environnement ou de l'.my.cnf
fichier (assurez-vous que le fichier est en mode 400 ou 600). Voir L'Utilisateur final lignes Directrices pour la Sécurité de Mot de passe.LOL! Le gabarit est en place! Eh bien, je suppose que c'est le retour à mon calendrier complet des obligations royales.
OriginalL'auteur Bill Karwin