Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Generar programaticamente script CREATE TABLE de tabla ya existente con T-SQL

Estas en el tema de Generar programaticamente script CREATE TABLE de tabla ya existente con T-SQL en el foro de SQL Server en Foros del Web. Hola, me gustaría saber si es posible generar una sentencia en T-SQL mediante la cual se genere un script CREATE TABLE basado en una tabla ...
  #1 (permalink)  
Antiguo 21/03/2011, 06:31
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Generar programaticamente script CREATE TABLE de tabla ya existente con T-SQL

Hola,

me gustaría saber si es posible generar una sentencia en T-SQL mediante la cual se genere un script CREATE TABLE basado en una tabla ya existente con sus correspondientes columnas, constraints, tipos de datos, etc.

Manualmente, conseguiría generar este script del siguiente modo:

1. Click derecho sobre mi tabla
2. Click en "Script Table as"
3. Click en "Create to"
4. Click en "New Query Editor Window"

No obstante, me gustaría tener un script que leyera automáticamente la estructura de la tabla y generase programáticamente un script CREATE TABLE. Es eso posible mediante algún comando de T-SQL o se puede alcanzar lo mismo mediante algo de código en C#?

Gracias por adelantado

Última edición por albert2stein; 22/03/2011 a las 03:29
  #2 (permalink)  
Antiguo 22/03/2011, 14:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Generar programaticamente script CREATE TABLE de tabla ya existente con T-

Si manejas vb.net

descárgate «SQL Server Export» de la sección «Aplicaciones» de http://www.mvp-access.com/rubenvigon y échale un vistazo al código fuente (Visual Basic 6.0)
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 26/03/2011, 04:07
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Generar programaticamente script CREATE TABLE de tabla ya existente con T-

acabo de generar el siguiente script(con mucha imaginacion), aun falta algunos datos que pides(solo genera el script de la tabla), pero creo lo puedes complementar o mejorar (ya me dio flojera terminarlo) [espero te sirva]
Código SQL:
Ver original
  1. CREATE PROCEDURE dbo.generaScript_sp
  2.     @tabla VARCHAR(40)
  3. AS
  4.     DECLARE @id INT
  5.     --obtener el id de la tabla
  6.         SET @id = isnull((SELECT id FROM dbo.sysobjects WHERE id = object_id(N'[dbo].['+ @tabla +']') AND OBJECTPROPERTY(id, N'IsUserTable') = 1),0)
  7.  
  8.     IF @id<>0
  9.     BEGIN
  10.         SELECT
  11.             campo
  12.         FROM (
  13.             SELECT 'create table dbo.' + @tabla + '( campo numeric(9) null' AS campo, 0 AS colorder
  14.             UNION
  15.             SELECT ', ['+CONVERT(sysname,c.name) + '] ' +
  16.                 t.name + CASE t.name WHEN 'datetime' THEN ' ' ELSE '('+CONVERT(VARCHAR,CASE WHEN d.DATA_TYPE IN (6,7) THEN d.data_precision ELSE OdbcPrec(c.xtype,c.LENGTH,c.xprec) END) + ') ' END + (
  17.                 CASE CONVERT(INT, ColumnProperty (c.id, c.name, 'AllowsNull')) WHEN 1 THEN 'NULL' WHEN 0 THEN '' END)+ ' Default ' + isnull(text,'NULL') AS Campo,c.colorder
  18.             FROM
  19.                 sysobjects o,
  20.                 master.dbo.spt_datatype_info d,
  21.                 systypes t,
  22.                 syscolumns c
  23.                 LEFT OUTER JOIN syscomments m ON c.cdefault = m.id AND m.colid = 1
  24.             WHERE
  25.                 o.id = @id
  26.                 AND c.id = o.id
  27.                 AND t.xtype = d.ss_dtype
  28.                 AND c.LENGTH = isnull(d.fixlen, c.LENGTH)
  29.                 AND (d.ODBCVer IS NULL OR d.ODBCVer = 2)
  30.                 AND (o.TYPE NOT IN ('P', 'FN', 'TF', 'IF') OR (o.TYPE IN ('TF', 'IF') AND c.NUMBER = 0))
  31.                 AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty (c.id, c.name, 'IsIdentity'),0)
  32.                 AND c.xusertype = t.xusertype
  33.             UNION
  34.             SELECT ')',9999998 AS colorder
  35.             UNION
  36.             SELECT 'alter table ' + @tabla + ' drop column [campo]',9999999 AS colorder
  37.         )B
  38.         ORDER BY colorder
  39.     END
  40.  
  41. GO
  42.  
  43. EXEC generaScript_sp 'tutabla'
  #4 (permalink)  
Antiguo 28/03/2011, 01:28
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Generar programaticamente script CREATE TABLE de tabla ya existente con T-

Muchísimas gracias a los dos, voy a intentar la soluciones que me habéis propuesto.

Etiquetas: create, existente, table, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.