>데이터 베이스 >MySQL 튜토리얼 >Bash 스크립트에서 MySQL에 데이터를 삽입할 때 '열 개수가 값 개수와 일치하지 않습니다' 오류를 수정하는 방법은 무엇입니까?

Bash 스크립트에서 MySQL에 데이터를 삽입할 때 '열 개수가 값 개수와 일치하지 않습니다' 오류를 수정하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-20 22:52:11371검색

How to Fix

Bash 스크립트를 사용하여 MySQL에 값 삽입

MySQL 서버에 연결하고 텍스트 파일의 데이터를 삽입하는 것을 목표로 하는 Bash 스크립트를 생성했습니다. 그러나 스크립트 실행 중 오류가 발생했습니다. 특히:

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 파일의 전체 내용을 단일 값으로 테스트 테이블에 추가합니다. 테스트 테이블에 3개의 열(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으로 문의하세요.