logo

MySQL 테이블을 CSV로 내보내기

MySQL에는 테이블을 CSV 파일로 내보내는 기능이 있습니다. CSV 파일 형식은 Microsoft Excel, Goole Docs, Open Office 등 다양한 애플리케이션 간에 데이터를 교환하는 데 사용하는 쉼표로 구분된 값입니다. MySQL 데이터를 CSV 파일 형식으로 저장하면 원하는 방식으로 분석하고 형식을 지정할 수 있어 유용합니다. 데이터를 매우 쉽게 내보내는 데 도움이 되는 일반 텍스트 파일입니다.

MySQL 테이블을 데이터베이스 서버에 있는 CSV 파일로 내보내는 쉬운 방법을 제공합니다. MySQL 데이터를 내보내기 전에 다음 사항을 확인해야 합니다.

  • MySQL 서버의 프로세스에는 CSV 파일이 포함된 지정된 (대상) 폴더에 대한 읽기/쓰기 액세스 권한이 있습니다.
  • 지정된 CSV 파일은 시스템에 존재하지 않아야 합니다.

테이블을 CSV 파일로 내보내려면 ....아웃파일로 선택 성명. 이 진술은 다음을 칭찬하는 것입니다. 데이터 로드 테이블의 데이터를 쓴 다음 이를 서버 호스트에서 지정된 파일 형식으로 내보내는 데 사용되는 명령입니다. 이 구문을 사용할 수 있는 파일 권한이 있는지 확인하는 것입니다.

 SELECT column_lists INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/filename.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY '
'; 

또한 이 구문을 값 문과 함께 사용하여 데이터를 파일로 직접 내보낼 수도 있습니다. 다음 진술은 이를 보다 명확하게 설명합니다.

 SELECT * FROM (VALUES ROW(1,2,3,4),ROW(5,6),ROW(7,8)) AS table1 INTO OUTFILE '/tmp/selected_values.txt'; 

수출하고 싶다면 모든 테이블 열 , 아래 구문을 사용합니다. 이 명령문을 사용하면 행의 순서와 수가 제어됩니다. 주문 그리고 한계 절.

자바로 파일 열기
 TABLE table_name ORDER BY lname LIMIT 1000 INTO OUTFILE '/path/filename.txt' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
';; 

위에서,

','로 끝나는 줄 : 쉼표 연산자로 끝나는 파일의 행 행을 나타내는 데 사용됩니다. 각 줄에는 파일의 각 열 데이터가 포함됩니다.

'''으로 묶인 필드 : 큰따옴표로 묶인 파일의 필드를 지정하는데 사용됩니다. 쉼표 구분 기호가 포함된 값을 방지합니다. 큰따옴표 안에 값이 포함된 경우 쉼표를 구분자로 인식하지 않습니다.

내보낸 파일의 저장 위치

MySQL에서 내보낸 모든 파일의 저장 위치는 기본 변수에 저장됩니다. secure_file_priv . 아래 명령을 실행하여 내보낸 파일의 기본 경로를 가져올 수 있습니다.

 mysql> SHOW VARIABLES LIKE 'secure_file_priv'; 

실행 후에는 다음 경로를 볼 수 있는 결과가 제공됩니다. C:/ProgramData/MySQL/MySQL 서버 8.0/업로드/ 기본 파일 위치로 이 경로는 내보내기 명령을 실행할 때 사용됩니다.

MySQL 테이블을 CSV로 내보내기

다음에 지정된 CSV 파일의 기본 내보내기 위치를 변경하려면 secure_file_priv 변수를 편집해야 합니다. my.ini 구성 파일. Windows 플랫폼에서 이 파일은 다음 경로에 있습니다. C:ProgramDataMySQLMySQL 서버 X.Y .

MySQL 데이터를 내보내려면 먼저 데이터 베이스 적어도 하나와 함께 테이블 . 우리는 이 표를 예로 사용하겠습니다.

우리는 데이터베이스와 테이블 우리가 사용하고 있는 편집기에서 아래 코드를 실행하면 됩니다.

 CREATE DATABASE testdb; USE testdb; CREATE TABLE employee_detail ( ID int NOT NULL AUTO_INCREMENT, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL, Phone varchar(15) DEFAULT NULL, City varchar(25) DEFAULT NULL, PRIMARY KEY (ID), UNIQUE KEY unique_email (Email), UNIQUE KEY index_name_phone (Name,Phone) ) INSERT INTO employee_detail ( Id, Name, Email, Phone, City) VALUES (1, 'Peter', '[email protected]', '49562959223', 'Texas'), (2, 'Suzi', '[email protected]', '70679834522', 'California'), (3, 'Joseph', '[email protected]', '09896765374', 'Alaska'), (4, 'Alex', '[email protected]', '97335737548', 'Los Angeles'), (5, 'Mark', '[email protected]', '78765645643', 'Washington'), (6, 'Stephen', '[email protected]', '986345793248', 'New York'); 

우리가 실행하면 선택하다 명령문을 실행하면 다음과 같은 출력이 표시됩니다.

분배 법칙 부울 대수학
MySQL 테이블을 CSV로 내보내기

SELECT INTO ... OUTFILE 문을 사용하여 MySQL 데이터를 CSV 형식으로 내보내기

테이블 데이터를 CSV 파일로 내보내려면 다음과 같이 쿼리를 실행해야 합니다.

맘타 쿨카르니 배우
 SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

다음과 같은 출력을 얻을 수 있으며, 여기서 6개 행이 영향을 받는 것을 볼 수 있습니다. 지정된 테이블에 6개의 행만 포함되어 있기 때문입니다.

MySQL 테이블을 CSV로 내보내기

동일한 명령문을 다시 실행하면 MySQL은 아래 출력에서 ​​볼 수 있는 오류 메시지를 생성합니다.

MySQL 테이블을 CSV로 내보내기

오류 메시지는 지정된 파일 이름이 지정된 위치에 이미 존재함을 알려줍니다. 따라서 동일한 이름과 위치로 새 CSV 파일을 내보내면 생성할 수 없습니다. 이 문제는 지정된 위치에 있는 기존 파일을 삭제하거나 파일 이름을 바꾸어 동일한 위치에 생성할 수 있습니다.

다음과 같이 지정된 경로로 이동하여 지정된 위치에 CSV 파일이 생성되었는지 여부를 확인할 수 있습니다.

MySQL 테이블을 CSV로 내보내기

이 파일을 열면 아래 이미지와 같습니다.

MySQL 테이블을 CSV로 내보내기

이미지에서 숫자 필드가 따옴표로 묶인 것을 볼 수 있습니다. 다음을 추가하여 이 스타일을 변경할 수 있습니다. ENCLOSED BY 앞의 OPTIONALLY 절 :

 SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY '
'; 

열 머리글과 함께 데이터 내보내기

때로는 파일을 편리하게 만들기 위해 열 제목과 함께 데이터를 내보내고 싶을 때가 있습니다. CSV 파일의 첫 번째 줄에 열 제목이 포함되어 있으면 내보낸 파일을 더 쉽게 이해할 수 있습니다. 다음을 사용하여 열 제목을 추가할 수 있습니다. 유니온 올 다음과 같이 진술:

 SELECT 'Id', 'Name', 'Email', 'Phone', 'City' UNION ALL SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ';' ENCLOSED BY ''' ESCAPED BY ''' LINES TERMINATED BY '
'; 

이 쿼리에서는 모든 열 이름에 제목을 추가했음을 알 수 있습니다. 첫 번째 줄에 각 열의 제목이 포함된 지정된 URL로 이동하여 출력을 확인할 수 있습니다.

MySQL 테이블을 CSV로 내보내기

MySQL 테이블을 CSV 형식으로 내보내기

MySQL OUTFILE을 사용하면 열 이름을 지정하지 않고도 테이블을 내보낼 수도 있습니다. 아래 구문을 사용하여 테이블을 CSV 파일 형식으로 내보낼 수 있습니다.

 TABLE employee_detail ORDER BY City LIMIT 1000 INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

위 명령문을 실행하면 명령줄 도구는 다음 결과를 생성합니다. 이는 지정된 테이블에 6개의 행이 포함되어 있음을 의미합니다. 직원_백업.csv 파일.

MySQL 테이블을 CSV로 내보내기

Null 값 처리

경우에 따라 결과 집합의 필드에 NULL 값이 있는 경우 대상 파일(내보낸 파일 형식)에 NULL 대신 N이 포함됩니다. NULL 값을 다음과 같이 바꾸면 이 문제를 해결할 수 있습니다. '해당사항 없음(해당사항 없음)' 사용하여 IFNULL 기능. 아래 진술은 이를 더 명확하게 설명합니다.

 SELECT Name, Email, Phone, IFNULL(Phone, 'N/A') FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

MySQL Workbench를 사용하여 테이블을 CSV 형식으로 내보내기

CSV 파일을 내보내기 위해 데이터베이스 서버에 액세스하고 싶지 않은 경우 MySQL은 MySQL Workbench를 사용하는 다른 방법을 제공합니다. Workbench는 명령줄 도구를 사용하지 않고 MySQL 데이터베이스로 작업할 수 있는 GUI 도구입니다. 이를 통해 문의 결과 집합을 로컬 시스템의 CSV 형식으로 내보낼 수 있습니다. 이렇게 하려면 다음 단계를 따라야 합니다.

봄 시즌
  • 문/쿼리를 실행하고 결과 집합을 가져옵니다.
  • 그런 다음 결과 패널에서 '레코드세트를 외부 파일로 내보내기' 옵션. 레코드 집합은 결과 집합에 사용됩니다.
  • 마지막으로 새 대화 상자가 표시됩니다. 여기서는 파일 이름과 형식을 제공해야 합니다. 세부사항을 입력하신 후 다음을 클릭하세요. 구하다 단추. 다음 이미지는 이를 더 명확하게 설명합니다.
MySQL 테이블을 CSV로 내보내기

이제 지정된 경로로 이동하여 결과를 확인할 수 있습니다.