Maison > base de données > tutoriel mysql > Comment corriger l'erreur « Le nombre de colonnes ne correspond pas au nombre de valeurs » lors de l'insertion de données dans MySQL à partir d'un script Bash ?

Comment corriger l'erreur « Le nombre de colonnes ne correspond pas au nombre de valeurs » lors de l'insertion de données dans MySQL à partir d'un script Bash ?

Barbara Streisand
Libérer: 2024-12-20 22:52:11
original
366 Les gens l'ont consulté

How to Fix

Insérer des valeurs dans MySQL à l'aide d'un script Bash

Vous avez créé un script Bash qui vise à se connecter à un serveur MySQL et à insérer des données à partir d'un fichier texte. Cependant, vous avez rencontré une erreur dans l'exécution du script, notamment :

ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
Copier après la connexion

Le problème réside dans la structure de votre commande :

echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;
Copier après la connexion

Cette commande tente essentiellement d'insérer l'intégralité du contenu du fichier test.txt sous forme de valeur unique dans la table de test. Puisque votre table de test comporte trois colonnes (IP, MAC, SERVEUR), cela entraîne une inadéquation entre le nombre de valeurs (1) et le nombre de colonnes (3).

Pour résoudre ce problème, vous allez Vous devez modifier votre script Bash pour traiter chaque ligne du fichier texte comme un ensemble distinct de valeurs à insérer dans la base de données. Voici une version révisée de votre script :

#!/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;
Copier après la connexion

Dans ce script modifié :

  • La boucle while lit chaque ligne du fichier test.txt, en attribuant les valeurs des trois champs (IP, MAC et SERVER) aux variables $ip, $mac et $server.
  • Les valeurs sont ensuite formatées dans une chaîne qui représente le SQL Instruction INSERT.
  • Enfin, la commande mysql est exécutée à plusieurs reprises, chaque itération insérant une nouvelle ligne dans la table de test.

En streaming le fichier lu et l'exécution du MySQL commande séparément, vous pouvez vous assurer que chaque ligne du fichier texte est correctement insérée en tant que ligne distincte dans la base de données.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal