Heim >Datenbank >MySQL-Tutorial >Wie behebt man den Fehler „Spaltenanzahl stimmt nicht mit Wertanzahl überein' beim Einfügen von Daten in MySQL aus einem Bash-Skript?

Wie behebt man den Fehler „Spaltenanzahl stimmt nicht mit Wertanzahl überein' beim Einfügen von Daten in MySQL aus einem Bash-Skript?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 22:52:11290Durchsuche

How to Fix

Einfügen von Werten in MySQL mithilfe eines Bash-Skripts

Sie haben ein Bash-Skript erstellt, das darauf abzielt, eine Verbindung zu einem MySQL-Server herzustellen und Daten aus einer Textdatei einzufügen. Bei der Ausführung des Skripts ist jedoch ein Fehler aufgetreten, insbesondere:

ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1

Das Problem liegt in der Struktur Ihres Befehls:

echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;

Dieser Befehl versucht im Wesentlichen, etwas einzufügen den gesamten Inhalt der test.txt-Datei als einzelnen Wert in die Testtabelle. Da Ihre Testtabelle über drei Spalten (IP, MAC, SERVER) verfügt, führt dies zu einer Nichtübereinstimmung zwischen der Anzahl der Werte (1) und der Anzahl der Spalten (3).

Um dieses Problem zu beheben, müssen Sie Folgendes tun Sie müssen Ihr Bash-Skript so ändern, dass jede Zeile der Textdatei als separater Satz von Werten behandelt wird, die in die Datenbank eingefügt werden. Hier ist eine überarbeitete Version Ihres Skripts:

#!/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;

In diesem modifizierten Skript:

  • Die while-Schleife liest jede Zeile aus der test.txt-Datei und weist die Werte der drei zu Felder (IP, MAC und SERVER) zu den Variablen $ip, $mac und $server.
  • Die Werte werden dann in eine Zeichenfolge formatiert, die die darstellt SQL INSERT-Anweisung.
  • Schließlich wird der MySQL-Befehl wiederholt ausgeführt, wobei bei jeder Iteration eine neue Zeile in die Testtabelle eingefügt wird.

Durch Streaming der gelesenen Datei und der Ausführung der Wenn Sie den MySQL-Befehl separat ausführen, können Sie sicherstellen, dass jede Zeile in der Textdatei korrekt als eindeutige Zeile in die Datenbank eingefügt wird.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Spaltenanzahl stimmt nicht mit Wertanzahl überein' beim Einfügen von Daten in MySQL aus einem Bash-Skript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn