MySQL 공식 홈페이지에서는 MySQL DB를 학습할 수 있도록 샘플 데이터셋을 제공합니다.

이를 MySQL DB에 적재하는 것에 대해서도 매우 친절하게 안내하고 있는데, 이 내용을 살펴봅니다.

MySQL 공식홈페이지에서 제공하는 샘플 데이터베이스 - employee data

https://dev.mysql.com/doc/index-other.html

Example Databases
- employee data
- world
- world_x
- sakila
- menagerie

MySQL 공식홈페이지에서는 여러가지 예제 데이터베이스를 제공하는데,

비교적 데이터양이 많은 employees를 기준으로 적재해봅니다.

다운로드

employees 샘플 데이터베이스는 깃허브를 이용해 배포되고 있습니다.

https://github.com/datacharmer/test_db

employees 샘플 데이터베이스를 깃헙에서 다운로드 받기

위와 같이 zip 파일로 내려 받습니다.

내려받은 zip 파일은 MySQL DB가 설치된 서버에 업로드 합니다.

git 사용이 가능한 환경이면, git clone으로 바로 내려받아도 무방합니다.

설치

https://dev.mysql.com/doc/employee/en/employees-installation.html

zip 파일을 unzip으로 압축을 풀어줍니다.

shell> unzip test_db-master.zip
shell> cd test_db-master

해당 경로로 들어가서, employees.sql을 mysql 유틸리티를 이용해 데이터를 적재해줍니다.

[root@myhost1 test_db-master]# mysql -t < employees.sql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

하지만 위와 같은 에러가 발생하실 수 있는데요.

root@localhost에 암호를 지정해둔 경우, 혹은 다른 user를 이용해 적재하고 싶을 경우 아래와 같이 합니다.

# -u, -p 옵션을 추가
[root@myhost1 test_db-master]# mysql -t -uroot -p < employees.sql

정상적으로 처리 된다면 아래와 같이 처리 화면이 출력됩니다.

+-----------------------------+
| INFO                        |
+-----------------------------+
| CREATING DATABASE STRUCTURE |
+-----------------------------+
+------------------------+
| INFO                   |
+------------------------+
| storage engine: InnoDB |
+------------------------+
+---------------------+
| INFO                |
+---------------------+
| LOADING departments |
+---------------------+
+-------------------+
| INFO              |
+-------------------+
| LOADING employees |
+-------------------+
+------------------+
| INFO             |
+------------------+
| LOADING dept_emp |
+------------------+
+----------------------+
| INFO                 |
+----------------------+
| LOADING dept_manager |
+----------------------+
+----------------+
| INFO           |
+----------------+
| LOADING titles |
+----------------+
+------------------+
| INFO             |
+------------------+
| LOADING salaries |
+------------------+
+---------------------+
| data_load_time_diff |
+---------------------+
| 00:01:15            |
+---------------------+

확인

이 employees 샘플 데이터베이스의 적재는 위 과정에서도 이미 상태가 확인이 되기는 하지만,

md5 / sha 방식으로 validate 체크를 할 수 있도록 제공하고 있습니다.

https://dev.mysql.com/doc/employee/en/employees-validation.html

sha, md5 방식 체크

# sha 방식

shell> time mysql -t -uroot -p < test_employees_sha.sql
# md5 방식
shell> time mysql -t -uroot -p < test_employees_md5.sql

그러면 각각의 방식으로 확인한 결과값이 출력됩니다.

sha 방식 결과는 아래와 같습니다.

+----------------------+
| INFO                 |
+----------------------+
| TESTING INSTALLATION |
+----------------------+
+--------------+------------------+------------------------------------------+
| table_name   | expected_records | expected_crc                             |
+--------------+------------------+------------------------------------------+
| departments  |                9 | 4b315afa0e35ca6649df897b958345bcb3d2b764 |
| dept_emp     |           331603 | d95ab9fe07df0865f592574b3b33b9c741d9fd1b |
| dept_manager |               24 | 9687a7d6f93ca8847388a42a6d8d93982a841c6c |
| employees    |           300024 | 4d4aa689914d8fd41db7e45c2168e7dcb9697359 |
| salaries     |          2844047 | b5a1785c27d75e33a4173aaa22ccf41ebd7d4a9f |
| titles       |           443308 | d12d5f746b88f07e69b9e36675b6067abb01b60e |
+--------------+------------------+------------------------------------------+
+--------------+------------------+------------------------------------------+
| table_name   | found_records    | found_crc                                |
+--------------+------------------+------------------------------------------+
| departments  |                9 | 4b315afa0e35ca6649df897b958345bcb3d2b764 |
| dept_emp     |           331603 | d95ab9fe07df0865f592574b3b33b9c741d9fd1b |
| dept_manager |               24 | 9687a7d6f93ca8847388a42a6d8d93982a841c6c |
| employees    |           300024 | 4d4aa689914d8fd41db7e45c2168e7dcb9697359 |
| salaries     |          2844047 | b5a1785c27d75e33a4173aaa22ccf41ebd7d4a9f |
| titles       |           443308 | d12d5f746b88f07e69b9e36675b6067abb01b60e |
+--------------+------------------+------------------------------------------+
+--------------+---------------+-----------+
| table_name   | records_match | crc_match |
+--------------+---------------+-----------+
| departments  | OK            | ok        |
| dept_emp     | OK            | ok        |
| dept_manager | OK            | ok        |
| employees    | OK            | ok        |
| salaries     | OK            | ok        |
| titles       | OK            | ok        |
+--------------+---------------+-----------+
+------------------+
| computation_time |
+------------------+
| 00:01:01         |
+------------------+
+---------+--------+
| summary | result |
+---------+--------+
| CRC     | OK     |
| count   | OK     |
+---------+--------+

real    1m2.108s
user    0m0.005s
sys     0m0.006s

md5 방식 결과는 아래와 같습니다.

+----------------------+
| INFO                 |
+----------------------+
| TESTING INSTALLATION |
+----------------------+
+--------------+------------------+----------------------------------+
| table_name   | expected_records | expected_crc                     |
+--------------+------------------+----------------------------------+
| departments  |                9 | d1af5e170d2d1591d776d5638d71fc5f |
| dept_emp     |           331603 | ccf6fe516f990bdaa49713fc478701b7 |
| dept_manager |               24 | 8720e2f0853ac9096b689c14664f847e |
| employees    |           300024 | 4ec56ab5ba37218d187cf6ab09ce1aa1 |
| salaries     |          2844047 | fd220654e95aea1b169624ffe3fca934 |
| titles       |           443308 | bfa016c472df68e70a03facafa1bc0a8 |
+--------------+------------------+----------------------------------+
+--------------+------------------+----------------------------------+
| table_name   | found_records    | found_crc                        |
+--------------+------------------+----------------------------------+
| departments  |                9 | d1af5e170d2d1591d776d5638d71fc5f |
| dept_emp     |           331603 | ccf6fe516f990bdaa49713fc478701b7 |
| dept_manager |               24 | 8720e2f0853ac9096b689c14664f847e |
| employees    |           300024 | 4ec56ab5ba37218d187cf6ab09ce1aa1 |
| salaries     |          2844047 | fd220654e95aea1b169624ffe3fca934 |
| titles       |           443308 | bfa016c472df68e70a03facafa1bc0a8 |
+--------------+------------------+----------------------------------+
+--------------+---------------+-----------+
| table_name   | records_match | crc_match |
+--------------+---------------+-----------+
| departments  | OK            | ok        |
| dept_emp     | OK            | ok        |
| dept_manager | OK            | ok        |
| employees    | OK            | ok        |
| salaries     | OK            | ok        |
| titles       | OK            | ok        |
+--------------+---------------+-----------+
+------------------+
| computation_time |
+------------------+
| 00:00:48         |
+------------------+
+---------+--------+
| summary | result |
+---------+--------+
| CRC     | OK     |
| count   | OK     |
+---------+--------+

real    0m53.053s
user    0m0.004s
sys     0m0.004s

DB에서 직접 확인

DB에 직접 접속해서 생성된 데이터베이스와 테이블 목록을 확인해 봅니다.

# 데이터베이스 목록 확인
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

# employees 데이터베이스 선택
mysql> use employees;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
# 테이블목록 확인
mysql> show tables;
+----------------------+
| Tables_in_employees  |
+----------------------+
| current_dept_emp     |
| departments          |
| dept_emp             |
| dept_emp_latest_date |
| dept_manager         |
| employees            |
| salaries             |
| titles               |
+----------------------+
8 rows in set (0.00 sec)

이제 샘플 데이터베이스를 활용하여 신나게(?) 테스트를 즐기면 됩니다.

끝!

날짜 내용
2020.10.01 최초 글 작성
2021.07.23 글 해당 공간으로 복제
2021.08.02 git clone에 대한 첨언 추가