了解您的數據對于從分析到轉型再到存儲和復制的流程至關重要。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.