|
11 | 11 |
|
12 | 12 |
|
13 | 13 | import System.Environment (lookupEnv) |
14 | | -import System.IO (hPrint, stderr) |
| 14 | +import System.IO (hPrint, stderr, hSetEncoding, stdout, utf8) |
15 | 15 |
|
16 | 16 | import qualified Language.Haskell.TH.Syntax as TH |
17 | 17 |
|
@@ -41,7 +41,7 @@ imports "java.util.*" |
41 | 41 | imports "java.sql.*" |
42 | 42 |
|
43 | 43 |
|
44 | | -datasetOracleSql :: String |
| 44 | +datasetOracleSql :: T.Text |
45 | 45 | datasetOracleSql = [q| |
46 | 46 | select |
47 | 47 | c.OWNER || '.' || c.TABLE_NAME as schema_name |
@@ -74,6 +74,25 @@ datasetMysqlSql = [q| |
74 | 74 | order by schema_name, c.ORDINAL_POSITION |
75 | 75 | |] |
76 | 76 |
|
| 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 | + |
77 | 96 |
|
78 | 97 | mkMCE :: Int -> T.Text -> [[T.Text]] -> J.Value |
79 | 98 | mkMCE ts platform fields@((schemaName:schemaDescription:_):_) = [aesonQQ| |
@@ -126,20 +145,27 @@ mkMCE ts platform fields@((schemaName:schemaDescription:_):_) = [aesonQQ| |
126 | 145 |
|
127 | 146 | main :: IO () |
128 | 147 | main = do |
| 148 | + hSetEncoding stdout utf8 |
129 | 149 | let |
130 | 150 | jvmArgs = case $(TH.lift =<< TH.runIO (lookupEnv "CLASSPATH")) of |
131 | 151 | Nothing -> [] |
132 | 152 | 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 | + |
135 | 158 | dbUser :: T.Text = "datahub" |
136 | 159 | dbPassword :: T.Text = "datahub" |
137 | | -
|
| 160 | + |
138 | 161 | -- 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" ; |
141 | 164 | -- 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 |
143 | 169 | runInBoundThread $ withJVM jvmArgs $ do |
144 | 170 | [jDbUrl, jDbUser, jDbPassword, jDbDriver, jDbSQL ] <- |
145 | 171 | mapM reflect [dbUrl, dbUser, dbPassword, dbDriver, dbSQL] |
|
0 commit comments