Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membetulkan Ralat 'Kiraan lajur tidak sepadan dengan kiraan nilai' Semasa Memasukkan Data ke dalam MySQL daripada Skrip Bash?

Bagaimana untuk Membetulkan Ralat 'Kiraan lajur tidak sepadan dengan kiraan nilai' Semasa Memasukkan Data ke dalam MySQL daripada Skrip Bash?

Barbara Streisand
Barbara Streisandasal
2024-12-20 22:52:11408semak imbas

How to Fix

Memasukkan Nilai ke dalam MySQL Menggunakan Skrip Bash

Anda telah mencipta skrip Bash yang bertujuan untuk menyambung ke pelayan MySQL dan memasukkan data daripada fail teks. Walau bagaimanapun, anda telah mengalami ralat dalam pelaksanaan skrip, khususnya:

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

Isunya terletak pada struktur arahan anda:

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

Arahan ini pada asasnya cuba untuk memasukkan keseluruhan kandungan fail test.txt sebagai nilai tunggal ke dalam jadual ujian. Memandangkan jadual ujian anda mempunyai tiga lajur (IP, MAC, SERVER), ini mengakibatkan ketidakpadanan antara bilangan nilai (1) dan bilangan lajur (3).

Untuk menyelesaikan isu ini, anda akan perlu mengubah suai skrip Bash anda untuk merawat setiap baris fail teks sebagai set nilai yang berasingan untuk dimasukkan ke dalam pangkalan data. Berikut ialah versi semakan skrip anda:

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

Dalam skrip yang diubah suai ini:

  • Gelung while membaca setiap baris daripada fail test.txt, memberikan nilai bagi tiga medan (IP, MAC dan SERVER) kepada pembolehubah $ip, $mac dan $server.
  • Nilainya kemudian diformatkan menjadi rentetan yang mewakili pernyataan SQL INSERT.
  • Akhir sekali, arahan mysql dilaksanakan berulang kali, dengan setiap lelaran memasukkan baris baharu ke dalam jadual ujian.

Dengan menstrimkan membaca fail dan pelaksanaan perintah MySQL secara berasingan, anda boleh memastikan bahawa setiap baris dalam fail teks dimasukkan dengan betul sebagai baris yang berbeza dalam pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Kiraan lajur tidak sepadan dengan kiraan nilai' Semasa Memasukkan Data ke dalam MySQL daripada Skrip Bash?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn