Script Bash pour insérer des valeurs dans MySQL, dépannage de l'erreur de nombre de colonnes
Dans cet article, nous aborderons le sujet de la création d'un bash script qui interagit de manière transparente avec un serveur MySQL et importe des données à partir d'un fichier texte. Nous explorerons une erreur courante rencontrée au cours de ce processus et fournirons une solution pour garantir une insertion réussie des données.
Analyse des erreurs :
L'une des erreurs les plus courantes lors de l'importation de données à partir d'un fichier texte vers MySQL à l'aide d'un script bash est l'erreur "Le nombre de colonnes ne correspond pas au nombre de valeurs". Cette erreur se produit généralement lorsque le nombre de valeurs que vous essayez d'insérer ne correspond pas au nombre de colonnes définies dans la table cible.
Exemple de scénario :
Considérez le script bash suivant :
#!/bin/bash echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;
Ce script tente d'importer des données d'un fichier texte nommé "test.txt" dans une table nommée "test" avec les colonnes "IP", "MAC" et "SERVER". Cependant, si le fichier texte ne contient pas de valeurs pour les trois colonnes, le script échouera avec l'erreur « Le nombre de colonnes ne correspond pas au nombre de valeurs ».
Solution :
Pour résoudre cette erreur, nous devons nous assurer que le fichier texte contient le nombre correct de valeurs pour chaque ligne. De plus, nous pouvons modifier le script bash pour lire les données du fichier texte ligne par ligne et exécuter des instructions d'insertion distinctes pour chaque ligne. Cela garantit que le nombre de valeurs correspond au nombre de colonnes.
Script mis à jour :
#!/bin/bash inputfile="test.txt" cat $inputfile | while read ip mac server; do echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('$ip', '$mac', '$server');" done | mysql -uroot -ptest test;
Ce script mis à jour lit les données du "test.txt" fichier en utilisant cat et le dirige dans la boucle while. La boucle parcourt chaque ligne, extrait les valeurs IP, MAC et SERVER et construit une instruction d'insertion pour chaque ligne. Les instructions d'insertion séparées sont ensuite exécutées à l'aide de la commande mysql, garantissant que le nombre de valeurs correspond au nombre de colonnes dans le tableau.
En suivant ces étapes, vous pouvez importer efficacement les données d'un fichier texte dans MySQL en utilisant un script bash tout en évitant l'erreur "Le nombre de colonnes ne correspond pas au nombre de valeurs".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!