Search code examples
schemacrawler

schemacrawlar can't print out table name


blow code just print out database name only,why?

public static void main(final String[] args) throws Exception
    {
        // Create a database connection
        final DataSource dataSource = new DatabaseConnectionOptions("jdbc:mysql://localhost:3306/target_db");
        final Connection connection = dataSource.getConnection("root", "password");

        // Create the options
        final SchemaCrawlerOptions options = new SchemaCrawlerOptions();
        options.setSchemaInfoLevel(SchemaInfoLevelBuilder.standard());

        options.setTableTypes(Lists.newArrayList("BASE TABLE","TABLE","VIEW"));
        options.setRoutineInclusionRule(new ExcludeAll());
        options.setSchemaInclusionRule(new RegularExpressionInclusionRule("target_db"));
        options.setTableNamePattern("*");

        // Get the schema definition
        final Catalog catalog = SchemaCrawlerUtility.getCatalog(connection, options);

        for (final Schema schema : catalog.getSchemas())
        {
            System.out.print("c--> " + schema.getCatalogName() + "\n");

            for (final Table table : catalog.getTables(schema))
            {

                System.out.print("o--> " + table);
                if (table instanceof View)
                {
                    System.out.println(" (VIEW)");
                } else
                {
                    System.out.println();
                }

                for (final Column column : table.getColumns())
                {
                    System.out.println("     o--> " + column + " (" + column.getColumnDataType() + ")");
                }
            }
        }
    }
}

Strangely,

./schemacrawler.sh -server=mysql -database=target_db -user=root -password=password -infolevel=ALL -command=schema

will output tables and corresponded columns.

Update:my configuration

 schemacrawler-14.09.03-main
  Ubuntu 16.04 64bit
  MariaDB 10.2.1-MariaDB-1~xenial
  (I assumed mariadb may not be supported yet,so switch between blow two drivers,but neither works)
  mysql-connector-java-6.0.3
 mariadb-java-client-1.4.6

Solution

  • Finally,I figured it out:

     options.setTableTypes(Lists.newArrayList("BASE TABLE","TABLE","VIEW","UNKNOWN"));
    

    Caution:with MariaDB,table types is "UNKNOWN"