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
Freigeben: 2024-12-20 22:52:11
Original
366 Leute haben es durchsucht

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
Nach dem Login kopieren

Das Problem liegt in der Struktur Ihres Befehls:

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

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage