首頁 >資料庫 >mysql教程 >從 Bash 腳本將資料插入 MySQL 時如何修復「列計數與值計數不符」錯誤?

從 Bash 腳本將資料插入 MySQL 時如何修復「列計數與值計數不符」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-20 22:52:11293瀏覽

How to Fix

使用 Bash 腳本將值插入 MySQL

您已經建立了一個 Bash 腳本,旨在連接到 MySQL 伺服器並從文字檔案插入資料。但是,您在執行腳本時遇到了錯誤,具體為:

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

問題在於命令的結構:

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

此命令本質上嘗試插入test.txt 檔案的全部內容作為單一值放入測試表中。由於您的測試表有三列(IP、MAC、SERVER),這會導致值的數量 (1) 和列的數量 (3) 不符。

要解決此問題,您將需要修改 Bash 腳本,將文字檔案的每一行視為要插入資料庫的一組單獨的值。這是腳本的修訂版本:

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

在此修改後的腳本中:

  • while 循環從test.txt 檔案中讀取每一行,並分配三行的值欄位(IP、MAC 和SERVER)到變數$ip、$mac 和$server。
  • 然後將值格式化為字串代表 SQL INSERT 語句。
  • 最後重複執行 mysql 指令,每次迭代都會在測試表中插入新行。

透過串流檔案讀取和執行單獨使用 MySQL 命令,可以確保文字檔案中的每一行都作為資料庫中的不同行正確插入。

以上是從 Bash 腳本將資料插入 MySQL 時如何修復「列計數與值計數不符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn