Skip to content

Commit c97d3fc

Browse files
add postgresql support and force utf8 encode on non-utf8 locale (datahub-project#1637)
1 parent b0081de commit c97d3fc

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

contrib/metadata-ingestion/bin/dataset-jdbc-generator.hs

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313
import System.Environment (lookupEnv)
14-
import System.IO (hPrint, stderr)
14+
import System.IO (hPrint, stderr, hSetEncoding, stdout, utf8)
1515

1616
import qualified Language.Haskell.TH.Syntax as TH
1717

@@ -41,7 +41,7 @@ imports "java.util.*"
4141
imports "java.sql.*"
4242

4343

44-
datasetOracleSql :: String
44+
datasetOracleSql :: T.Text
4545
datasetOracleSql = [q|
4646
select
4747
c.OWNER || '.' || c.TABLE_NAME as schema_name
@@ -74,6 +74,25 @@ datasetMysqlSql = [q|
7474
order by schema_name, c.ORDINAL_POSITION
7575
|]
7676

77+
datasetPostgresqlSql :: T.Text
78+
datasetPostgresqlSql = [q|
79+
SELECT
80+
c.table_schema || '.' || c.table_name as schema_name
81+
, pgtd.description as schema_description
82+
, c.column_name as field_path
83+
, c.data_type as native_data_type
84+
, pgcd.description as description
85+
FROM INFORMATION_SCHEMA.COLUMNS c
86+
INNER JOIN
87+
pg_catalog.pg_statio_all_tables as st on c.table_schema=st.schemaname and c.table_name=st.relname
88+
LEFT JOIN
89+
pg_catalog.pg_description pgcd on pgcd.objoid=st.relid and pgcd.objsubid=c.ordinal_position
90+
LEFT JOIN
91+
pg_catalog.pg_description pgtd on pgtd.objoid=st.relid and pgtd.objsubid=0
92+
WHERE c.table_schema NOT IN ('information_schema', 'pg_catalog')
93+
ORDER by schema_name, ordinal_position ;
94+
|]
95+
7796

7897
mkMCE :: Int -> T.Text -> [[T.Text]] -> J.Value
7998
mkMCE ts platform fields@((schemaName:schemaDescription:_):_) = [aesonQQ|
@@ -126,20 +145,27 @@ mkMCE ts platform fields@((schemaName:schemaDescription:_):_) = [aesonQQ|
126145

127146
main :: IO ()
128147
main = do
148+
hSetEncoding stdout utf8
129149
let
130150
jvmArgs = case $(TH.lift =<< TH.runIO (lookupEnv "CLASSPATH")) of
131151
Nothing -> []
132152
Just cp -> [ cs ("-Djava.class.path=" ++ cp) ]
133-
platform :: T.Text = "localhost_datahub"
134-
dbUrl :: T.Text = "jdbc:mysql://localhost:3306/datahub?useSSL=false"
153+
platform :: T.Text = "localhost_postgresql"
154+
-- dbUrl :: T.Text = "jdbc:mysql://localhost:3306/datahub?useSSL=false"
155+
-- dbUrl :: T.Text = "jdbc:oracle:thin@localhost:1521:EDWDB"
156+
dbUrl :: T.Text = "jdbc:postgresql://localhost:5432/datahub"
157+
135158
dbUser :: T.Text = "datahub"
136159
dbPassword :: T.Text = "datahub"
137-
160+
138161
-- dbDriver:: T.Text = "oracle.jdbc.OracleDriver" ;
139-
dbDriver:: T.Text = "com.mysql.jdbc.Driver" ;
140-
-- dbDriver:: T.Text = "org.postgresql.Driver" ;
162+
-- dbDriver:: T.Text = "com.mysql.jdbc.Driver" ;
163+
dbDriver:: T.Text = "org.postgresql.Driver" ;
141164
-- dbDriver:: T.Text = "com.microsoft.sqlserver.jdbc.SQLServerDriver" ;
142-
dbSQL :: T.Text = datasetMysqlSql
165+
166+
-- dbSQL :: T.Text = datasetMysqlSql
167+
-- dbSQL :: T.Text = datasetOracleSql
168+
dbSQL :: T.Text = datasetPostgresqlSql
143169
runInBoundThread $ withJVM jvmArgs $ do
144170
[jDbUrl, jDbUser, jDbPassword, jDbDriver, jDbSQL ] <-
145171
mapM reflect [dbUrl, dbUser, dbPassword, dbDriver, dbSQL]

0 commit comments

Comments
 (0)