Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Copiar estructura de una tabla de una Bd a otra Bc (https://www.clubdelphi.com/foros/showthread.php?t=87427)

ginesgomezlopez 03-01-2015 23:25:38

Copiar estructura de una tabla de una Bd a otra Bc
 
Hola tengo una base de datos virgen sin datos (sólo la estructura) que me sirve para empezar sin datos cada año, a esta base de datos le creo una tabla (sólo la estructura). Cómo podría copiar esa tabla a una Base de Datos que es idéntica a la virgen en cuanto a tablas y estructura pero que sólo le falta esta tabla que he creado.

la version con las que trabajo son IbExper 2014.1.1.1 y Firebird 2.5

He estado mirando en internet pero no encuentro algo que me funcione.

AgustinOrtu 04-01-2015 07:26:25

Usas sentencias DDL (lenguaje de definicion de datos)

Código SQL [-]
USE < BaseDeDatosConDatos >
CREATE TABLE < NombreDeLaTabla >
  Nombre VARCHAR(100) NOT NULL,
  Apellido VARCHAR(100) NOT NULL
  < mas campos >

La mayoria de las herramientas para trabajar con las BD tienen una opcion que te genera el script para crear la tabla (o la BD entera). No he usado IBExpert pero por lo que comentan por el foro seguro que tiene esa funcionalidad

Un saludo!

olbeup 05-01-2015 08:40:59

Cita:

Empezado por ginesgomezlopez (Mensaje 487290)
Hola tengo una base de datos virgen sin datos (sólo la estructura) que me sirve para empezar sin datos cada año, a esta base de datos le creo una tabla (sólo la estructura). Cómo podría copiar esa tabla a una Base de Datos que es idéntica a la virgen en cuanto a tablas y estructura pero que sólo le falta esta tabla que he creado.

la version con las que trabajo son IbExper 2014.1.1.1 y Firebird 2.5

He estado mirando en internet pero no encuentro algo que me funcione.

Hola ginesgomezlopez,

Para copiar la estructura de una tabla, solo tienes que poner:
Código SQL [-]
SELECT *
  INTO TablaNueva
  FROM TablaDeDatos
Después sólo tienes que crear los indices de la TablaNueva
Si la tabla que quieres copiar la estructura tiene datos, sólo tienes que filtrar por el campo que no existe ese dato. eje.
Código SQL [-]
WHERE IDCLIENTE = -1
Un saludo.

Casimiro Notevi 05-01-2015 09:55:04

Cita:

Empezado por olbeup (Mensaje 487303)
SELECT * INTO TablaNueva FROM TablaDeDatos

¿Estás seguro?

olbeup 05-01-2015 14:06:02

Cita:

Empezado por Casimiro Notevi (Mensaje 487304)
¿Estás seguro?

SQL SERVER :D, en FireBird no :eek:

Un saludo.

Casimiro Notevi 05-01-2015 14:31:07

Entonces con "select * into nuevatabla from viejatabla" crea la tabla 'nuevatabla' si no existe.

olbeup 05-01-2015 14:40:25

Cita:

Empezado por Casimiro Notevi (Mensaje 487308)
Entonces con "select * into nuevatabla from viejatabla" crea la tabla 'nuevatabla' si no existe.

Una pena que no tenga esa utilidad ;)

Un saludo.

Casimiro Notevi 05-01-2015 14:47:41

Cita:

Empezado por olbeup (Mensaje 487309)
Una pena que no tenga esa utilidad

Quieres decir entonces que no lo hace.

De todas formas, crear una tabla es simple, incluso se puede crear un procedimiento almacenado para pasarle como parámetro el nombre de una tabla y el nuevo nombre, para que se cree 'automáticamente'.

Lo que me extraña es que sea cierto que con un "select" cree una tabla, porque puede dar también pie a problemas.
También hay que tener en cuenta que eso se sale por completo de las especificaciones del estandar sql.

olbeup 05-01-2015 15:21:22

Cita:

Empezado por Casimiro Notevi (Mensaje 487310)
Quieres decir entonces que no lo hace.

De todas formas, crear una tabla es simple, incluso se puede crear un procedimiento almacenado para pasarle como parámetro el nombre de una tabla y el nuevo nombre, para que se cree 'automáticamente'.

Lo que me extraña es que sea cierto que con un "select" cree una tabla, porque puede dar también pie a problemas.
También hay que tener en cuenta que eso se sale por completo de las especificaciones del estandar sql.

Utilizo en bastantes ocasiones el copiar tablas para hacer pruebas con la tabla, que se sale del estandar sql, cualquier motor de base de datos ya se sale del estandar cuando incorporan mejoras en el motor.

Que lleva a confusión el utilizar "SELECT * INTO B FROM A", si sabes lo que estas haciendo pues no, a los que empiezan con SQL pues sí.

Crear un procedimiento almacenado seria lo ideal para copiar estructuras o toda la tabla.

Un saludo.

Casimiro Notevi 05-01-2015 18:09:07

Claro.
.


La franja horaria es GMT +2. Ahora son las 17:59:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi