'mysqlimport'유틸리티에서 경고를 어떻게 나열합니까?


28

우선 MySQL 자체에서 데이터를로드하는 것이 아니라 "mysqlimport"명령 줄 도구를 사용하는 것입니다.

CSV를 테이블에 직접로드하는 데 사용하고 있으며 생성 된 경고를 확인해야합니다. 자세한 정보 나 디버깅이 설정된 상태에서 경고 메시지를 표시 할 수 없습니다. 어떤 아이디어?

(MySQL 5.0.5)

답변:


31

mysqlimport로는 불가능하지만 대안으로 다음을 수행 할 수 있습니다.

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

교체 listOfColumnNames열의 적절한 구분 목록.

마술은 (이전에 언급 한 Eduard와 같이) mysqlimport는 경고를 직접 얻을 수있는 방법을 제공하지 않기 때문에 동일한 세션에서 LOAD DATA INFILE과 SHOW WARNINGS 명령을 함께 실행하는 것입니다.


고마워요! 나는 에두아르의 의견을 본 후에 이와 같은 진술을 쓰기 시작했다. 고마워요! 감사합니다
brink

tables.csv로컬 파일 인 경우 (즉, 데이터베이스 서버에없는 경우 ) 이 작업이 작동합니까 ?
Raffi Khatchadourian 2016 년

다음은 나를 위해 먼저 테이블을 만든 다음 mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db 관련 stackoverflow.com/questions/14127529/…
barlop

mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;언급 된대로 utf8에 대해 추가 할 수 있습니다. stackoverflow.com/questions/4957900/…
barlop

문제는 종료 코드가 항상 있다는 0것이므로 위의 스크립트를 작성할 때 가져 오기가 성공했는지 여부를 확인하기 위해 명령 출력을 구문 분석해야한다고 생각합니다 (?)
pkaramol

5

다른 사람들이 말했듯이 실제 문제는 SHOW WARNINGS가 작동하려면 동일한 연결된 세션에 있어야한다는 것입니다. mysqlimport는 가져 오기가 완료되는 즉시 세션에서 연결을 끊어 현재 버전에서는 경고를 캡처 할 수 없습니다. 패치를 기부 할 수있는 기회 인 것 같습니다. :)


1

mysqlimport로 경고를 인쇄하는 방법도 찾지 못했습니다. 그러나 mysqlimport는 "LOAD DATA INFILE"만을 수행하지 않으므로 mysql 명령을 사용하여 데이터를 가져오고 "SHOW WARNINGS"를 표시하지 않는 이유는 무엇입니까?


감사! mysqlimport를 자극하는 종류는 실제로 훌륭하지 않습니다 : /
brink

"SHOW WARNINGS"를 사용하십시오. "LOAD"뒤에 명령.
Eduard Wirch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.