Dynamic script can be generated using Teradata DBC tables. we would use dbc.tables to generate the DDL of all objects available in development database and later we can change that script to deploy to Test or any other environment.
You can use below BTEQ script which will actually generate the standard SHOW TABLE
.SET ERROROUT STDOUT
.logon 10.16.X.X/tdusre,tduserpwd
.Set Echoreq off
.Set Titledashes off
.Set Separator '|'
.Set Format off
.set width 5000
.Set Null ''
.export file=.\Prepare_DDL.BTEQ;
select distinct 'SHOW TABLE ' || TRIM(databasename) || '.' || TRIM(tablename) || ';'
from dbc.tables
where tablekind =t' and databasename in
(
'DD_DEV_ENV'
);
.export reset;
.Logoff;
.Quit;
You can invoke this BTEQ on command prompt as "Bteq < Bteq_filename > FileName.logs
In next step you can open up Prepare_DDL.BTEQ and modify it as above to execute that will give you all table DDL;s in one file. The modified file will look like as follows
.SET ERROROUT STDOUT
.logon 10.16.X.X/tdusre,tduserpwd
.Set Echoreq off
.Set Titledashes off
.Set Separator '|'
.Set Format off
.Set Null ''
.set width 5000
.export file=.\Generated_DDL.sql;
SHOW TABLE DD_DEV_ENV.ACTION_TYPE;
SHOW TABLE DD_DEV_ENV.BARRING;
...........
......
......
.export reset;
.Logoff;
.Quit;
The final exported file "Generated_DDL.sql" will have all the Create table statements which you can modify /parametrized and use to migrate to any other environment.
Thanks
Very helpful
ReplyDeleteNice Effort Tahir. Just to Add, The script will only work fine assuming database ONLY contains Tables. otherwise output can have errors if Database contain Macros, procedures or Views. To fix this the where clause should have tablekind='t' check :D Because DBC.Tables contains all objects :)
ReplyDeleteThanks Umer I have updated the blog. :)
ReplyDelete