본문 바로가기
MySQL/기본 개념 및 지식

[MySQL] 22. 테이블 복사 및 데이터 추가

글: Song hyun 2024. 6. 5.
728x90
반응형

[MySQL] 22. 테이블 복사 및 데이터 추가

1. 기존 테이블 구조 복사하기

2. 기존 테이블 구조와 데이터 모두 복사하기

3. 기존 테이블의 데이터를 이용해, 새 데이터를 삽입하기 (INSERT INTO SELECT)

4. CSV 파일 또는 외부 데이터 소스 사용하기


1. 기존 테이블 구조 복사하기

 

데이터베이스에서 한 테이블의 구조나 데이터를 다른 테이블로 복사하는 작업은 여러 상황에서 유용하게 사용된다.

 

 

기존에 존재했던 dept_emp의 구조를 그대로 복사한 것을 확인할 수 있다.

*where 1=0 조건 때문에, 어떠한 데이터도 가져오지 않고, 컬럼 구조만 복제된 새 테이블이 생성되었다.

use employees;
-- 테이블 복사(구조만 복사)
create table dept_emp_copy
as select*from dept_emp
where 1=0;

select*from dept_emp_copy;
desc dept_emp_copy;

 


2. 기존 테이블 구조와 데이터 모두 복사하기

우측 이미지와 같이 쿼리 코스트를 확인할 수 있다.

*기본키, 외래키, 인덱스 등의 제약사항은 복사되지 않을 수 있다.

따라서, 이러한 제약사항을 수동으로 추가해야 할 필요가 있다. (alter 사용)

create table employees_copy
as select*from employees;

3. 기존 테이블의 데이터를 이용해, 새 데이터를 삽입하기 (INSERT INTO SELECT)

insert into dept_emp_copy(emp_no,dept_no,from_date,to_date)
	select emp_no,dept_no,from_date,to_date
	from dept_emp
    where emp_no>20001;
    
select*from dept_emp_copy;

4. CSV 파일 또는 외부 데이터 소스 사용하기

-대량의 데이터를 처리해야 할 때는 외부 파일에서 데이터를 읽어와서, 데이터베이스 테이블에 삽입하는 방법이 효율적이다. 대부분의 데이터베이스 시스템에서는 외부 데이터 파일을 삽입할 수 있는 도구나 명령어를 제공한다.

 

*CSV 파일: Comma-seperated values. 몇 가지 필드를 쉼표(,)로 구분해둔 텍스트 데이터 및 텍스트 파일이다. 스프레드 시트, 데이터베이스 소프트웨어에서 많이 쓰였다. 유사한 포맷으로는 TSV,SSV 등이 있다.

LOAD DATA INFILE 'path/to/yourfile.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;  -- 첫 번째 행이 헤더일 경우 이 행을 무시

 

이름,나이,직업
홍길동,30,개발자
김영희,25,디자이너
이철수,28,마케터
728x90
반응형