I have a oracle script to convert table structure from Oracle to Redshift kind of below,
WITH TABLE_SCRIPT AS (
SELECT
TABLE_NAME,
COLUMN_NAME,
CASE
WHEN DATA_TYPE= 'DATE' THEN 'DATE'
WHEN DATA_TYPE= 'DATETIME' THEN 'TIMESTAMP'
WHEN DATA_TYPE LIKE 'TIMESTAMP%' THEN 'TIMESTAMP'
WHEN DATA_TYPE= 'LONG' THEN 'TEXT'
WHEN DATA_TYPE= 'NCHAR' THEN 'NCHAR(' || DATA_LENGTH || ')'
WHEN DATA_TYPE= 'NVARCHAR' THEN 'NVARCHAR(' || DATA_LENGTH || ')'
FROM ALL_TAB_COLUMNS
WHERE
OWNER= 'SMART_DS'
AND TABLE_NAME = 'BATCH'
ORDER BY DATA_TYPE,COLUMN_ID
)
SELECT 'CREATE TABLE '||MAX(TABLE_NAME) ||' (' as text FROM TABLE_SCRIPT
UNION ALL
SELECT ' '||COLUMN_NAME||' '||REDSHIFT_COLUMN_DEFINITION || ', ' AS TEXT FROM TABLE_SCRIPT
UNION ALL
SELECT ' );' AS TEXT FROM dual
When I run this script it has to run perfectly. My problem is ' , '
should not come at the end of second row, how to change that?
CREATE TABLE VERSION
(
RELEASE_ID DOUBLE PRECISION NOT NULL ,
VERSION_ID DOUBLE PRECISION NOT NULL ,
)