mysql 가져오기 데이터를 유연하게 처리하는 중 오류 발생

SQL 파일에서 데이터베이스를 가져오는 데 자주 사용됩니다. mysqldump의 스크립트에서 데이터베이스를 복구할 수도 있고 데이터베이스를 이전할 수도 있습니다.이러한 SQL 파일에는 항상 여러 개의 문이 포함되어 있으며 중간에 오류가 발생하면 가져오기 작업 전체가 종료됩니다.이런 상황에 부닥치면 어떻게 처리해야 합니까?
먼저 데모용 SQL 스크립트 데모를 준비합니다.sql
SET NAMES UTF8;

CREATE TABLE cc (
        `account_id` mediumint(9) NOT NULL AUTO_INCREMENT,
        PRIMARY KEY (`account_id`)
)ENGINE=MyISAM  DEFAULT CHARSET=utf8;

INSERT INTO cc VALUE(1);
INSERT INTO cc (2);
INSERT INTO cc VALUE(3);

SQL 파일을 데이터베이스 테스트로 가져오기
# cat demo.sql | mysql -u root test
ERROR 1064 (42000) at line 9: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2)' at line 1

오류를 보고합니다.제시 메시지에서 잘못된 문장은 9줄이다.검사해 보다
# tail -n +9 demo.sql | head -1
INSERT INTO cc (2);

9 앞의 + 번호는 파일 헤더부터 계산된 9행을 나타냅니다.문법 오류를 발견하다.sed로 줄 바꾸기
# sed -i '9s/.*/INSERT INTO cc VALUE(2);/' demo.sql

교체가 완료되었습니다.아까 틀린 부분을 이어서 계속 가져오도록 하겠습니다.
# tail -n+9 demo.sql | mysql -u root test

데이터베이스를 봐라, 데이터가 모두 있다. 가져오기에 성공했다
mysql> select * from cc;
+------------+
| account_id |
+------------+
|          1 |
|          2 |
|          3 |
+------------+
3 rows in set (0.00 sec)

전재 는 출처 를 밝혀 주십시오http://blog.csdn.net/afeiqiang/article/details/8823194

좋은 웹페이지 즐겨찾기