데이터를 복사하지 않고 테이블 복사


153
CREATE TABLE foo SELECT * FROM bar

테이블을 복사하여 foo이라는 새 테이블로 복제합니다 bar.

데이터를 복사 하지 않고foo 호출 된 새 테이블에 스키마를 복사하는 방법은 무엇입니까?bar


1
sqlserver 2005에서 동일한 작업을 수행하는 방법은 무엇입니까?
Thunder

바의 의미는 무엇입니까?
Saraiya Smit


@Thunder는 MS SQL에서 "Colums only"복사본을 수행 할 수있는 것처럼 보입니다. 참조 : stackoverflow.com/questions/2505728/…
Kevin Worthington

답변:


140

시험:

CREATE TABLE foo SELECT * FROM bar LIMIT 0

또는:

CREATE TABLE foo SELECT * FROM bar WHERE 1=0

4
@Thunder : 시도select * into foo from bar where 1=0
Andomar

29
이것은 제약이나 키를 복사하지 않는 것 같습니다
Timo Huovinen

15
@TimoHuovinen : 아마도 create table NewTable like OldTable당신을위한 옵션 일 것입니다. 삭제 된 답변에서 링크가 복사되었습니다.
Andomar

1
부하가 높고 동시성이 높은 경우에는 이것을 사용하는 데 실제로 주의 하십시오 . 방금 다른 프로세스에서 소스 테이블에 삽입하는 것과 동시에 동일한 소스 테이블을 기반으로 약 50 개의 서로 다른 테이블을 생성하는 규모로 이것을 사용하여 레코딩했습니다. 기본적으로 막대한 잠금 붕괴가 발생하여 MySQL을 다시 시작해야했습니다.
Mark B

6
음, OP는 혼란스러워? " 데이터 복사 하지 않고 ..."라는 질문의 제목과 강조 부분에주의를 기울이면 RCNell의 답변이 정당하게 가장 많이 투표됩니다. 왜 이것이 받아 들여 졌는지 확실하지 않습니다. 그냥 말해
xyphenor

421

시험

CREATE TABLE foo LIKE bar;

키와 인덱스도 같이 복사됩니다.

선적 서류 비치


40
이것은 색인을 복사하기 때문에 더 나은 대답입니다!
Chaitan

2
훨씬 낫지 만 여전히 외래 키를 복사하지는 않습니다.
Josef Sábl

@RCNeil, CREATE TABLE new_tbl LIKE orig_tbl;복사 권한도 있습니까? 아니면 수동으로 복사해야합니까?
Pacerier

2
아마도이 답변이 정답으로 표시된 것보다 4 년 늦게
나왔기 때문일 것입니다.

1
@ Pierre-OlivierVares 문서 텍스트는 실제 답변과 직접적인 관련이 없습니다. 답변 텍스트는 질문에 대한 답변을 제공하는 간결한 반면, 문서 링크는 추가 컨텍스트를 제공합니다. 따라서 문서의 텍스트로 답을 부 풀리는 것은 도움이되지 않습니다.
Abion47

27
SHOW CREATE TABLE bar;

해당 테이블에 대한 create 문을 얻고 테이블 이름 또는 원하는 다른 것을 편집 한 다음 실행합니다.

이를 통해 인덱스를 복사하고 테이블 작성을 수동으로 조정할 수 있습니다.

프로그램 내에서 쿼리를 실행할 수도 있습니다.


어떻게 show create table bar동적으로 실행 가능한 문장으로 변환 할 수 있습니까?
Pacerier 2019

show create table bar스크립트가 테이블을 생성 할 수있는 권한을 가진 경우에 의해 주어진 결과 는 이미 실행 가능합니다.이 테이블을 구문 분석 한 다음 alter table 문도 실행할 수 있습니다.
Timo Huovinen

create table...인덱스를 복사하지 않습니다. 이 답변이 더 나은 옵션입니다
bluepinto

2

테이블 구조 만 복제하려고합니다.

CREATE TABLE foo SELECT * FROM bar WHERE 1 = 2;

또한 데이터를 복사하려고합니다.

CREATE TABLE foo as SELECT * FROM bar;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.