首页 >数据库 >mysql教程 >从 Bash 脚本将数据插入 MySQL 时如何修复'列计数与值计数不匹配”错误?

从 Bash 脚本将数据插入 MySQL 时如何修复'列计数与值计数不匹配”错误?

Barbara Streisand
Barbara Streisand原创
2024-12-20 22:52:11358浏览

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