【问题标题】:SchemaCrawler getting Sequences from PostgreSQL databaseSchemaCrawler 从 PostgreSQL 数据库中获取序列
【发布时间】:2017-09-28 14:07:14
【问题描述】:

我使用 Schema 14.16.01 并使用 java api 在 PostgreSQL 9.6 数据库上运行它。我似乎无法让 api 从我的 PostgreSQL 中获取序列数据。我从上一个问题中看到,您需要将信息级别设置为最大,但这似乎没有帮助。我能够从数据库中获取除序列之外的所有其他信息。

    SchemaCrawlerOptions options = new SchemaCrawlerOptions();
    options.setSchemaInfoLevel(SchemaInfoLevelBuilder.maximum());
    options.setColumnInclusionRule(new IncludeAll());
    options.setTableInclusionRule(new IncludeAll());
    options.setSchemaInclusionRule(new IncludeAll());
    options.setRoutineInclusionRule(new ExcludeAll());
    options.setSequenceInclusionRule(new IncludeAll());

    Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/database", "postgres", "postgres" );
    SchemaCrawler crawler = new SchemaCrawler(con, new DatabaseSpecificOverrideOptions());

这是我测试的控制台输出。

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option 
MaxPermSize=1g; support was removed in 8.0
Connected to the target VM, address: '127.0.0.1:64896', transport: 'socket'
Apr 28, 2017 5:25:42 PM schemacrawler.crawl.SchemaCrawler crawlSchemas
INFO: Crawling schemas
Apr 28, 2017 5:25:42 PM schemacrawler.crawl.SchemaRetriever retrieveAllSchemas
INFO: Retrieving all schemas
Apr 28, 2017 5:25:42 PM schemacrawler.crawl.SchemaRetriever retrieveAllCatalogs
INFO: Retrieving all catalogs
Apr 28, 2017 5:25:42 PM schemacrawler.crawl.MetadataResultSet close
INFO: Processed 3 rows for <retrieveAllSchemas>
Apr 28, 2017 5:25:42 PM schemacrawler.crawl.SchemaRetriever retrieveSchemas
INFO: Retrieved 3 schemas
Apr 28, 2017 5:25:42 PM schemacrawler.crawl.SchemaCrawler crawlSchemas
INFO: Total time taken for <crawlSchemas> - 00:00:00.028 hours
- 92.9% - 00:00:00.026 - <retrieveSchemas>
-  7.1% - 00:00:00.002 - <sortAndFilterSchemas>

Apr 28, 2017 5:25:42 PM schemacrawler.crawl.SchemaCrawler crawlDatabaseInfo
INFO: Retrieving database information
Apr 28, 2017 5:25:43 PM schemacrawler.crawl.SchemaCrawler crawlDatabaseInfo
INFO: Retrieving JDBC driver information
Apr 28, 2017 5:25:43 PM schemacrawler.crawl.SchemaCrawler crawlDatabaseInfo
INFO: Retrieving SchemaCrawler crawl information
Apr 28, 2017 5:25:43 PM schemacrawler.crawl.SchemaCrawler crawlDatabaseInfo
INFO: Total time taken for <crawlDatabaseInfo> - 00:00:00.678 hours
-  0.0% - 00:00:00.000 - <retrieveDatabaseInfo>
- 81.4% - 00:00:00.552 - <retrieveAdditionalDatabaseInfo>
-  0.0% - 00:00:00.000 - <retrieveJdbcDriverInfo>
-  1.2% - 00:00:00.008 - <retrieveAdditionalJdbcDriverInfo>
- 17.4% - 00:00:00.118 - <retrieveCrawlHeaderInfo>

Apr 28, 2017 5:25:43 PM schemacrawler.crawl.SchemaCrawler crawlColumnDataTypes
INFO: Crawling column data types
Apr 28, 2017 5:25:43 PM schemacrawler.crawl.SchemaCrawler$1 call
INFO: Retrieving system column data types
Apr 28, 2017 5:25:43 PM schemacrawler.crawl.SchemaCrawler$2 call
INFO: Retrieving user column data types
Apr 28, 2017 5:25:43 PM schemacrawler.crawl.DatabaseInfoRetriever retrieveUserDefinedColumnDataTypes
INFO: Retrieving data types for schema <information_schema>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.DatabaseInfoRetriever retrieveUserDefinedColumnDataTypes
INFO: Retrieving data types for schema <pg_catalog>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.DatabaseInfoRetriever retrieveUserDefinedColumnDataTypes
INFO: Retrieving data types for schema <public>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.SchemaCrawler crawlColumnDataTypes
INFO: Total time taken for <crawlColumnDataTypes> - 00:00:01.039 hours
- 34.7% - 00:00:00.361 - <retrieveSystemColumnDataTypes>
- 65.3% - 00:00:00.678 - <retrieveUserDefinedColumnDataTypes>

Apr 28, 2017 5:25:44 PM schemacrawler.crawl.SchemaCrawler crawlTables
INFO: Crawling tables
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.TableRetriever retrieveTables
INFO: Retrieving tables
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.TableRetriever retrieveTablesFromMetadata
INFO: Retrieving tables for schema <information_schema>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.MetadataResultSet close
INFO: Processed 0 rows for <retrieveTables>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.TableRetriever retrieveTablesFromMetadata
INFO: Retrieving tables for schema <pg_catalog>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.MetadataResultSet close
INFO: Processed 0 rows for <retrieveTables>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.TableRetriever retrieveTablesFromMetadata
INFO: Retrieving tables for schema <public>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.MetadataResultSet close
INFO: Processed 202 rows for <retrieveTables>
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.SchemaCrawler crawlTables
INFO: Retrieved 202 tables
Apr 28, 2017 5:25:44 PM schemacrawler.crawl.TableColumnRetriever retrieveColumns
INFO: Retrieving table columns
Apr 28, 2017 5:25:46 PM schemacrawler.crawl.TableColumnRetriever retrieveHiddenColumns
INFO: No hidden table columns SQL provided
Apr 28, 2017 5:25:46 PM schemacrawler.crawl.ForeignKeyRetriever retrieveForeignKeys
INFO: Retrieving foreign keys
Apr 28, 2017 5:25:57 PM schemacrawler.crawl.SchemaCrawler$22 call
INFO: Retrieving primary keys and indexes
Apr 28, 2017 5:25:57 PM schemacrawler.crawl.IndexRetriever retrieveIndexes
INFO: Retrieving indexes
Apr 28, 2017 5:26:02 PM schemacrawler.crawl.IndexRetriever retrievePrimaryKeys
INFO: Retrieving primary keys
Apr 28, 2017 5:26:03 PM schemacrawler.crawl.TableExtRetriever retrieveTriggerInformation
INFO: Not retrieving trigger definitions, since this was not requested
Apr 28, 2017 5:26:03 PM schemacrawler.crawl.TableExtRetriever retrieveViewInformation
INFO: Not retrieving additional view information, since this was not requested
Apr 28, 2017 5:26:03 PM schemacrawler.crawl.TableExtRetriever retrieveTableDefinitions
INFO: Not retrieving table definitions, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.TableExtRetriever retrieveIndexInformation
INFO: Not retrieving additional index information, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.TableExtRetriever retrieveIndexColumnInformation
INFO: Not retrieving additional index column information, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.TableExtRetriever retrieveAdditionalTableAttributes
INFO: Not retrieving additional table attributes, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.TableExtRetriever retrieveAdditionalColumnAttributes
INFO: Not retrieving additional column attributes, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlTables
INFO: Total time taken for <crawlTables> - 00:00:19.387 hours
-  0.2% - 00:00:00.047 - <retrieveTables>
-  9.2% - 00:00:01.789 - <retrieveColumns>
- 54.8% - 00:00:10.615 - <retrieveForeignKeys>
-  0.4% - 00:00:00.079 - <filterAndSortTables>
- 35.2% - 00:00:06.821 - <retrieveIndexes>
-  0.0% - 00:00:00.000 - <retrieveTableConstraintInformation>
-  0.0% - 00:00:00.000 - <isRetrieveTableConstraintDefinitions>
-  0.0% - 00:00:00.000 - <retrieveTriggerInformation>
-  0.0% - 00:00:00.000 - <retrieveViewInformation>
-  0.0% - 00:00:00.000 - <retrieveTableDefinitions>
-  0.0% - 00:00:00.001 - <retrieveIndexInformation>
-  0.0% - 00:00:00.001 - <retrieveAdditionalTableAttributes>
-  0.2% - 00:00:00.031 - <retrieveTablePrivileges>
-  0.0% - 00:00:00.001 - <retrieveAdditionalColumnAttributes>
-  0.0% - 00:00:00.002 - <retrieveTableColumnPrivileges>

Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlRoutines
INFO: Crawling routines
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.RoutineRetriever retrieveProcedures
INFO: Not retrieving procedures, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.RoutineRetriever retrieveFunctions
INFO: Not retrieving functions, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.RoutineRetriever retrieveProcedures
INFO: Not retrieving procedures, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.RoutineRetriever retrieveFunctions
INFO: Not retrieving functions, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.RoutineRetriever retrieveProcedures
INFO: Not retrieving procedures, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.RoutineRetriever retrieveFunctions
INFO: Not retrieving functions, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlRoutines
INFO: Retrieved 0 routines
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlSynonyms
INFO: Crawling synonyms
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SynonymRetriever retrieveSynonymInformation
INFO: Not retrieving synonyms, since this was not requested
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlSynonyms
INFO: Total time taken for <crawlSynonyms> - 00:00:00.001 hours
-  0.0% - 00:00:00.000 - <retrieveSynonymInformation>
-100.0% - 00:00:00.001 - <sortAndFilterSynonms>

Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlSequences
INFO: Crawling sequences
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SequenceRetriever retrieveSequenceInformation
INFO: Retrieving sequences
Apr 28, 2017 5:26:04 PM schemacrawler.crawl.SchemaCrawler crawlSequences
INFO: Total time taken for <crawlSequences> - 00:00:00.002 hours
-  0.0% - 00:00:00.000 - <retrieveSequenceInformation>
-100.0% - 00:00:00.002 - <sortAndFilterSequences>

编辑

来自序列查询的小段

    sequence_catalog | sequence_schema |              sequence_name              | increment | minimum_value |    maximum_value    | cycle_option
------------------+-----------------+-----------------------------------------+-----------+---------------+---------------------+--------------
                  | public          | analysis_license_pk_seq                 | 1         | 1             | 9223372036854775807 | NO
                  | public          | analysis_summaries_instance_pk_seq      | 1         | 1             | 9223372036854775807 | NO

【问题讨论】:

  • 请确保us.fatehi:schemacrawler-postgresql 在您的类路径中
  • @SualehFatehi 还有其他需要做的配置吗?我将 schemacrawler-postgresql 添加到我的 mvn pom 中,但似乎没有任何变化。
  • 应该没有进一步的调查。请通过-loglevel=ALL 提供完整的日志,以便进一步调查。另外,运行sequences query 看看它是否返回任何东西。
  • 我从上面的序列查询中添加了一小部分结果,并且由于我正在通过 java api 运行模式爬虫,我可以将该日志级别设置为高吗?此外,由于序列未绑定到 sequence_catalog,是否会发生此问题?
  • @SualehFatehi 我可以使用java -classpath $(echo ../../_schemacrawler/lib/*.jar | tr ' ' ':') schemacrawler.Main -server=postgresql -database=cim -user=postgres -password=cim -infolevel=standard -command schema -infolevel=maximum -sorttables=false -sequences=.* -loglevel=All -outputformat $2从命令行获取序列

标签: schemacrawler


【解决方案1】:

您需要确保使用 SchemaCrawler - PostgreSQL 插件。为了以编程方式执行此操作,您需要:

  1. 在您的类路径中包含 us.fatehi:schemacrawler-postgresql jar。
  2. 当您实例化 SchemaCrawler Java 对象时,请确保您使用正确的 DatabaseSpecificOverrideOptions 实例,这将加载 PostgreSQL 插件。有关示例,请参阅 code from SchemaCrawlerUtility

Sualeh Fatehi,SchemaCrawler

【讨论】:

  • 设置正确的DatabaseSpecificOverrideOptions 解决了我的问题。感谢您向我指出如何正确设置的一些示例。
  • 此建议也适用于存在单独 jar 的任何其他非标准数据库。这帮助我找到了我需要的 hsqldb jar。
猜你喜欢
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2014-05-27
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
相关资源
最近更新 更多