Skip to main content
Question

Query to generate ERD CSV file from Sybase

  • January 30, 2026
  • 2 replies
  • 12 views

Forum|alt.badge.img

Hi 

I know sybase is not supported and not in the list. How to generate CSV file for sybase and import ERD into Lucid? Any help is appreciated.

I have below Query but not populating constrains data. i try to import the generate data into lucid chart i am getting error

Query

--------------

SELECT

    'sybase' AS dbms,

    db_name() AS TABLE_CATALOG,

    user_name(o.uid) AS TABLE_SCHEMA,

    o.name AS TABLE_NAME,

    c.name AS COLUMN_NAME,

    c.colid AS ORDINAL_POSITION,

    t.name AS DATA_TYPE,

    c.length AS CHARACTER_MAXIMUM_LENGTH,

    -- Identify Primary Keys (Type 1 in syskeys)

    CASE WHEN EXISTS (SELECT 1 FROM syskeys k WHERE k.id = o.id AND k.type = 1

          AND c.name IN (col_name(k.id, key1), col_name(k.id, key2), col_name(k.id, key3)))

         THEN 'PRIMARY KEY' ELSE NULL END AS CONSTRAINT_TYPE,

    -- Identify Foreign Key References

    user_name(ro.uid) AS REFERENCED_TABLE_SCHEMA,

    ro.name AS REFERENCED_TABLE_NAME,

    col_name(ro.id, k.key1) AS REFERENCED_COLUMN_NAME

FROM sysobjects o

JOIN syscolumns c ON o.id = c.id

JOIN systypes t ON c.usertype = t.usertype

LEFT JOIN syskeys k ON o.id = k.depid AND k.type = 2 -- Type 2 is Foreign Key

LEFT JOIN sysobjects ro ON k.id = ro.id -- Referenced (Parent) Object

WHERE o.type = 'U'

ORDER BY o.name, c.colid;

Comments

aparrish
Lucid Legend Level 7
Forum|alt.badge.img+15
  • Lucid Legend Level 7
  • January 31, 2026

@Chandra444 Try the following: 

SELECT
    'sybase' AS dbms,
    db_name() AS TABLE_CATALOG,
    user_name(o.uid) AS TABLE_SCHEMA,
    o.name AS TABLE_NAME,
    c.name AS COLUMN_NAME,
    c.colid AS ORDINAL_POSITION,
    t.name AS DATA_TYPE,
    c.length AS CHARACTER_MAXIMUM_LENGTH,

    /* PRIMARY KEY */
    CASE 
        WHEN EXISTS (
            SELECT 1
            FROM syskeys pk
            WHERE pk.id = o.id
              AND pk.type = 1
              AND c.colid IN (
                  pk.key1, pk.key2, pk.key3, pk.key4, pk.key5, pk.key6,
                  pk.key7, pk.key8, pk.key9, pk.key10, pk.key11, pk.key12,
                  pk.key13, pk.key14, pk.key15, pk.key16
              )
        ) THEN 'PRIMARY KEY'
        ELSE NULL
    END AS CONSTRAINT_TYPE,

    /* REFERENCED TABLE */
    user_name(ro.uid) AS REFERENCED_TABLE_SCHEMA,
    ro.name AS REFERENCED_TABLE_NAME,

    /* REFERENCED COLUMN */
    col_name(ro.id,
        CASE c.colid
            WHEN fk.key1 THEN fk.depkey1
            WHEN fk.key2 THEN fk.depkey2
            WHEN fk.key3 THEN fk.depkey3
            WHEN fk.key4 THEN fk.depkey4
            WHEN fk.key5 THEN fk.depkey5
            WHEN fk.key6 THEN fk.depkey6
            WHEN fk.key7 THEN fk.depkey7
            WHEN fk.key8 THEN fk.depkey8
            WHEN fk.key9 THEN fk.depkey9
            WHEN fk.key10 THEN fk.depkey10
            WHEN fk.key11 THEN fk.depkey11
            WHEN fk.key12 THEN fk.depkey12
            WHEN fk.key13 THEN fk.depkey13
            WHEN fk.key14 THEN fk.depkey14
            WHEN fk.key15 THEN fk.depkey15
            WHEN fk.key16 THEN fk.depkey16
        END
    ) AS REFERENCED_COLUMN_NAME

FROM sysobjects o
JOIN syscolumns c ON o.id = c.id
JOIN systypes t ON c.usertype = t.usertype

/* FK relationship */
LEFT JOIN syskeys fk 
       ON fk.depid = o.id 
      AND fk.type = 2
      AND c.colid IN (
          fk.key1, fk.key2, fk.key3, fk.key4, fk.key5, fk.key6,
          fk.key7, fk.key8, fk.key9, fk.key10, fk.key11, fk.key12,
          fk.key13, fk.key14, fk.key15, fk.key16
      )

LEFT JOIN sysobjects ro ON fk.id = ro.id

WHERE o.type = 'U'
ORDER BY o.name, c.colid;


alison cheney
Forum|alt.badge.img+4
  • Lucid community team
  • February 2, 2026

Hi ​@Chandra444,

 

Thank you for posting in the Lucid Community, and thank you ​@aparrish for your amazing help here!

It looks like you have submitted a product support ticket. Our support team will answer any questions you have. Thank you for your help and patience!