데이터베이스에서 한 테이블의 구조나 데이터를 다른 테이블로 복사하는 작업은 여러 상황에서 유용하게 사용됩니다. 테이블의 구조만을 복사하거나, 구조와 데이터 모두를 복사할 수 있습니다
. 1. 테이블 구조만 복사하기
테이블의 구조만을 새로운 테이블로 복사하고자 할 때, 데이터는 복사하지 않고 구조만 생성합니다.
CREATE TABLE 새_테이블
AS SELECT * FROM 기존_테이블 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;
이 쿼리는 기존 테이블의 모든 컬럼을 선택하지만, WHERE 1=0 조건 때문에 어떠한 데이터도 가져오지 않습니다. 결과적으로 컬럼 구조만 복제된 새 테이블이 생성됩니다.
2. 테이블 구조와 데이터 모두 복사하기
CREATE TABLE 새_테이블
AS SELECT * FROM 기존_테이블;
use employees;
-- 테이블 복사(구조만 복사)
create table dept_emp_copy
as select * from dept_emp
where 1 = 0;
select * from dept_emp_copy;
desc dept_emp_copy;
create table employees_copy
as select * from employees;
select * from employees_copy;
테이블의 구조와 함께 데이터도 새로운 테이블로 복사하려면 다음 쿼리를 사용합니다.
주의사항
기본키, 외래키, 인덱스 등의 제약사항은 복사되지 않을 수 있습니다. 따라서, 이러한 제약사항을 수동으로 추가해야 할 필요가 있습니다.
💡 기존 테이블의 데이터를 이용하여 새 데이터를 삽입할 수 있습니다.
INSERT INTO SELECT 문 사용
use employees;
-- 테이블 복사(구조만 복사)
create table dept_emp_copy
as select * from dept_emp
where 1 = 0;
select * from dept_emp;
desc dept_emp_copy;
create table employees_copy
as select * from employees;
select * from employees_copy;
-- ------
select * from dept_emp_copy;
delete from dept_emp_copy;
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;
CSV 파일 또는 외부 데이터 소스 사용
대량의 데이터를 처리해야 할 때는 외부 파일(예: CSV)에서 데이터를 읽어와서 데이터베이스 테이블에 삽입하는 방법이 효율적입니다. 대부분의 데이터베이스 시스템에서는 외부 데이터 파일을 삽입할 수 있는 도구나 명령어를 제공합니다.
LOAD DATA INFILE 'path/to/yourfile.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; -- 첫 번째 행이 헤더일 경우 이 행을 무시
'MySQL' 카테고리의 다른 글
Groub By 와 having 절 (0) | 2024.06.13 |
---|---|
MySQL Function (1) | 2024.06.13 |
JOIN (0) | 2024.06.13 |
관계 차수 (0) | 2024.06.13 |
MySQL 에서 인덱스(index)란 (0) | 2024.06.13 |