了解您的数据对于从分析到转型再到存储和复制的流程至关重要。jdbc 标准提供了一种直接访问数据库元数据的方法, 无论是从 java 应用程序还是在 jdbc 驱动的工具和应用程序中以编程方式访问数据库元数据。使用 cdata jdbc 驱动程序, 您可以访问来自110多个数据源的元数据, 使用 rdbms、saas、大数据甚至 nosql 数据的关系模型。

本文将使用 java 代码中的 cdata jdbc 驱动程序连接到数据源, 并检索和查看数据源元数据, 以便更深入地了解和改进使用。虽然示例和示例代码引用了 salesforce 的 cdata jdbc 驱动程序, 但这些主体可以应用于任何 cdata jdbc 驱动程序。

连接到数据

在发现数据源元数据之前, 首先需要连接到数据源。如果您还没有安装 cdata jdbc 驱动程序, 则可以下载任何驱动程序的30天免费试用版。请确保在有实际数据的数据源中使用驱动程序。

下载并安装驱动程序后, 您就可以连接到数据了。创建一个新的 java 项目, 并将 jdbc 驱动程序添加到生成路径中。

  • 在日食中:
    1. 右键单击 “项目”, 然后选择 “生成路径”-& gt; “添加外部存档”。
    2. 导航到 jdbc 驱动程序 (例如, cdata.jdbc.salesforce.jar) 的 jar 文件。
  • 在 intellij 中:
    1. 右键单击 “项目”, 然后选择 “打开模块”。
    2. 导航到 “项目设置” 下的 “库”, 然后单击 “添加” 以查找并添加 jdbc jar 文件。

将驱动程序添加到生成路径后, 您可以浏览连接到数据源所需的代码。从加载驱动程序 (如 jdbc 4.0) 开始 (如 jdbc 4.0), 并使用 < cn/> 类创建与数据源的连接 (在本例中为 salesforce)。要连接, 您需要配置 jdbc url, 传递必要的连接属性和值 (需要哪些属性的具体细节, 请参见数据源的联机帮助文档):

String sfURL = "jdbc:salesforce:User=user@domain.com;Password=my_sf_password;SecurityToken=my_sf_security_token;";
 
//optional
Class.forName("cdata.jdbc.salesforce.SalesforceDriver");
 
Connection sfConn = DriverManager.getConnection(sfURL);

创建连接后, 可以开始发现数据源的元数据。

发现表和视图

java 中 < c2 /> 接口的 < cn/> 方法允许您从数据源检索表列表。根据您的数据源, 这些表和视图可以表示各种数据集, 从 saas api 的简单 rest 端点到分层数据结构 (如 nosql 数据库中常见的数据结构)。cdata 驱动程序是为了提供一个合理的数据模型而构建的, 无论数据源是什么。下面的代码从 salesforce 检索表和视图的完整列表:

示例代码

//Collect the metadata
DatabaseMetaData sfMeta = sfConn.getMetaData();
 
//Retrieve all tables and views
ResultSet rs = sfMeta.getTables(null, null, "%", null);
 
//Print the results
while (rs.next()) {
	System.out.println(rs.getString("TABLE_NAME"));
}

预期产出

  AcceptedEventRelation
  Account
  AccountCleanInfo
  AccountContactRole
  ...
  VerificationHistory
  VisualforceAccessMetrics
  Vote
  WebLink

如果要将结果限制为表、视图、系统表或任意组合, 请将字符串数组作为类型参数传递给 < cn/> 方法:

  • :getTables(null, null, “%”, new String[]{“TABLE”})
  • 浏览次数:getTables(null, null, “%”, new String[]{“VIEW”})
  • 系统表:getTables(null, null, “%”, new String[]{“SYSTEM TABLE”})

上面的示例代码仅显示表名

表 _ scem 字符串 表架构。 表名称 字符串 表名。 表 _ 类型 字符串 表类型。 言论 字符串 表说明。

了解数据源中的表后, 可以使用 < cn/> 方法获取有关指定表的列的信息。

发现列

java 中 < c2 /> 接口的 < cn/ > 方法允许您从数据源检索选定表的列列表。< c/> 参数允许您按表名限制结果。对于由 cdata 驱动程序支持的 saas、大数据和 nosql 数据源, 将根据您的配置分析现有数据结构 (无论这些是 saas api 的 rest 响应的一部分, 还是在 nosql 文档结构中找到的单个元素)。驱动程序, 以显示类似数据库的模型, 无论数据源。下面的代码示例从 salesforce 检索 “帐户” 表的列列表:

示例代码

//Collect the metadata
DatabaseMetaData sfMeta = sfConn.getMetaData();
 
//Retrieve the columns of the "Account" table
ResultSet rs = sfMeta.getColumns(null, null, "Account", null);
 
//Output the results
while (rs.next()) {
	System.out.println(rs.getString("COLUMN_NAME"));
}

预期产出

  Id
  IsDeleted
  MasterRecordId
  Name
  ...
  NumberofLocations__c
  UpsellOpportunity__c
  SLASerialNumber__c
  SLAExpirationDate__c

请注意附加了 “_ c” 的列。这些是通过 jdbc 驱动程序从 salesforce api 检索到的自定义列。由于驱动程序动态检索元数据以检测列, 因此在重新连接时, 会反映添加或删除自定义字段。

示例代码仅显示请求表的列名。为便于参考, < cn/> 方法为检索到的每个表返回以下列:

列名称 数据类型 产品说明
表 _ cat 字符串 数据库名称。
表 _ scem 字符串 表架构。
表名称 字符串 表名。
科伦 _ 名称 字符串 列名称。
数据类型 Int 由 java.sql.Types 中定义的常量的值标识的数据类型。
类型名称 字符串 驱动程序使用的数据类型名称。
colon _ 尺寸 Int 以列的字符为表示的长度或数字精度。
缓冲长度 Int 缓冲区长度。
十进制 _ 数字 Int 小数点右侧的列比例或位数。
num _ prec _ radix Int 半径或基部。
Int 列是否可以包含由以下 jdbc 数据库元数据常量定义的 null: 列 non杆菌 (0) 或列 null 可 (1)。
言论 字符串 列说明。
colon _ def 字符串 列的默认值。
sql _ data _ type Int 由规范保留。
sql _ dateime _ sub Int 由规范保留。
char _ octet _ length Int 二进制列和基于字符的列的最大长度
是可移动的 字符串 是否允许空值: 是还是否。 范围目录 字符串 作为引用属性范围的表目录。 scope _ chema 字符串 作为引用属性范围的表架构。 范围 _ 表 字符串 作为引用属性范围的表名。 来源 _ 数据 _ 类型 Int 不同类型的源类型。或者, 用户生成的 ref 类型。如果 data _ type 不是不一致的, 则此值为 null。如果用户生成的 ref, 则此值为 null。 是自动增加 字符串 列值是否由 salesforce 以固定增量分配。 是 _ 通用的 字符串 是否生成列: 是还是否。 仅 布尔 列是否为只读。 iskey 布尔 列是否为键。

通过为数据源发现的表和列, 您就可以开始对数据执行明智的分析、转换和其他操作了。

通用元数据发现

借助适用于110多个不同 saas、大数据和 nosql 数据源的 jdbc 驱动程序, cdata 使您能够轻松地发现数据源的元数据。由于所有驱动程序都遵循 jdbc 标准, 因此无论数据源如何, 元数据查询都将保持一致。得益于创新的数据处理功能, cdata 驱动程序甚至能够为您的 nosql 数据提供可靠的类似数据库的模型。下载任何 jdbc 驱动程序的30天免费试用版,并亲自查看 cdata 差异。

Comments are closed.