El blog de Juan Palómez

28 octubre 2009

Copiar tablas / crear tablas con una SELECT / Copy tables

Archivado en: Uncategorized — Etiquetas: , , , , — thisisoneball @ 01:37

Hay varias formas diferentes de copiar una tabla rápidamente, en una sola consulta SQL. Evitan tener que hacer un CREATE TABLE especificando todos los nombres y tipos de datos de los campos. No obstante sólo copian los campos, no los índices ni las constraints. Esta es una comparativa de ellas y los SGBD en los que funciona cada una:

Consulta Mysql Postgres Oracle Access Copia estructura Copia datos
CREATE TABLE destino AS SELECT * FROM origen Si Si Si No Si Si
CREATE TABLE destino LIKE origen Si** Si No No Si No
INSERT INTO destino SELECT * FROM origen Si Si Si Si No Si
SELECT * INTO destino FROM origen No Si* No Si Si Si

* La documentación de Postgres recomienda usar CREATE TABLE AS mejor que SELECT INTO

** En MySQL esta instrucción copia todas las características de la tabla origen, incluidos los índices, comentarios, … Por lo tanto para hacer una copia idéntica lo mejor es CREATE TABLE destino LIKE origen + INSERT INTO destino SELECT * FROM origen

Esto también puede servir para copiar tablas entre distintos esquemas. Por ejemplo en MySQL:

CREATE TABLE esquema2.tabla AS SELECT * FROM esquema1.tabla;

About these ads

3 comentarios »

  1. Gracias me re sirvio

    Comentario por Kshin — 17 enero 2011 @ 15:44

  2. [...] indices y llaves foraneas hay que cambiar bastante el script y buscando por ahi encontré esta referencia, magica y que nos ofrece otras opciones genericas. Para mantener indices hay que hacer una consulta [...]

    Pingback por Copiar tablas desde SQL « Raziel Ventura — 23 julio 2011 @ 01:08

  3. la sentencia en postgres debe ser asi CREATE TABLE destino (LIKE origen), sino le saldra un error, y para los indices la sentencia seria create table tabladestino ( like tablaorigen INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES );

    Comentario por urano_68@hotmail.com — 19 marzo 2013 @ 15:24


RSS feed para los comentarios de esta entrada. TrackBack URI

Deja un comentario

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

El tema Shocking Blue Green Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: