본문 바로가기
my_lesson/_SQL

SQL - INSERT INTO SELECT

by boolean 2016. 2. 25.
728x90

SQL INSERT INTO SELECT 문

SQL INSERT INTO SELECT 테이블에 있는 어떤 값을 다른 테이블로 복사할 수 있다.

SQL INSERT INTO SELECT Syntax

table1의 모든 컬럼을 선택해서 이미 존재하는 table2로 복사한다. 

INSERT INTO table2
SELECT * FROM table1;

table1에 있는 column_name(s) 컬럼을 table2로 복사

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;


예:

Suppliers 테이블에서 컬럼 SupplierName, Country value를 Customers 테이블의 (CustomerName, Country)컬럼으로 복사한다. 


INSERT INTO Customers (CustomerName, Country)
SELECT SupplierName, Country FROM Suppliers;



예2:

Suppliers 테이블 SupplierName, Country 컬럼에서 Country가 Germany인 것을 복사

INSERT INTO Customers (CustomerName, Country)
SELECT SupplierName, Country FROM Suppliers
WHERE Country='Germany';



Mysql database, table  : import export



수 백만건에 달하는 양의 데이터를 백업 하거나 이관 해야 할 경우 한번에  넣고 빼기를 할 수 있는 방법이 없을까?


하고 고민을 하다가 mysql big data fast import 의 키워드로 검색을 하다보니 mysqldump로 하는 게 좋다는 이야기가 나오고 있어서 한번 찾아봤다.


찾아서 해보니... 600만건의 자료를 추출하는데 대략 10분, 넣는데 6분 정도의 시간이 소요되었다. 오홍... +_+)




참고사이트 : http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html


export 하기 : mysqldump 를 이용한 예


데이터베이스 전체를 추출하는 경우

mysqldump -u root -p guestdb > guestdb.sql

특정 테이블만 추출하는 경우

mysqldump -u root -p guestdb guestTbl > guestdb.sql

특정 테이블에 대한 drop sql 을 추가하려는 경우

mysqldump -p –user=username –add-drop-table guestdb guestTbl > guestTbl.sql

Enter password: ********

import 하기


데이터베이스 전체를 추출한 경우

$ mysql -u username -p < guestdb.sql

특정데이터베이스의 테이블만 추출한 경우

$ mysql -u username -p –database=guestdb < guestTbl.sql


'my_lesson > _SQL' 카테고리의 다른 글

SQL - CREATE INDEX  (0) 2016.02.25
SQL - CREATE  (0) 2016.02.25
SQL - SELECT INTO  (0) 2016.02.25
MySQL DB 생성/조회/삭제  (0) 2014.12.29
MySQL user 생성,권한,조회/삭제  (1) 2014.12.29

댓글