"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `mysql` 및 `sed`를 사용하여 모든 MySQL 테이블을 CSV 파일로 대량 내보내기하려면 어떻게 해야 합니까?

`mysql` 및 `sed`를 사용하여 모든 MySQL 테이블을 CSV 파일로 대량 내보내기하려면 어떻게 해야 합니까?

2024년 12월 22일에 게시됨
검색:814

How Can I Bulk Export All MySQL Tables to CSV Files Using `mysql` and `sed`?

'mysqldump'를 사용한 대량 CSV 내보내기

MySQL 데이터 관리 영역에서 테이블 내용을 CSV 형식으로 내보내는 것은 중요한 작업일 수 있습니다 . 'mysqldump'는 데이터베이스 백업을 위한 강력한 유틸리티이지만 모든 테이블을 CSV로 독점적으로 내보내는 옵션이 없습니다. 이 기사에서는 'mysql'과 사후 처리의 조합을 사용하여 이를 달성하기 위한 대체 접근 방식을 탐구합니다.

'-B' 매개변수가 있는 'mysql'

핵심 우리 솔루션 중 하나는 'mysql' 유틸리티의 '-B' 매개변수를 활용하는 것입니다. 이 매개변수는 프로그램이 탭으로 구분된 형식으로 결과를 표시하도록 지시합니다. 'sed'를 통해 출력을 파이핑하면 데이터를 추가로 조작하여 헤더가 있는 CSV 파일을 만들 수 있습니다.

Bash 스크립트 반복

모든 테이블을 데이터베이스의 경우 Bash 스크립트를 활용하여 테이블 이름 목록을 반복할 수 있습니다. 한 가지 접근 방식은 다음 명령을 결합하는 것입니다:

mysql -u username -ppassword dbname -sN -e "SHOW TABLES;" | \
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
    mysql -B -u username -p password database -h dbhost -e "SELECT * FROM $tb;" \
    | sed “s/”/\””/g;s/'/\'/;s/\t/\”,\”/g;s/^/\”/;s/$/\”/;s/\n//g” > "$tb.csv"
done

이 스크립트는 먼저 'SHOW TABLES'를 사용하여 테이블 목록을 검색하고 이를 'tb' 변수에 저장합니다. 그런 다음 각 테이블 이름을 반복하고 '-B' 매개변수를 사용하여 'SELECT *' 쿼리를 실행합니다. 결과 출력은 'sed'에 의해 처리되어 테이블 이름을 딴 CSV 파일에 저장됩니다.

결론

'mysql의 '-B' 매개변수를 결합하여 ' 및 'sed' 사후 처리를 통해 MySQL 데이터베이스의 모든 테이블을 CSV 형식으로 효과적으로 내보낼 수 있습니다. 이 접근 방식은 'mysqldump'의 한계를 우회하고 출력 데이터 조작에 더 큰 유연성을 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3