開啟向量引擎最佳化功能後,您可以通過SQL介面訪問雲原生資料倉儲AnalyticDB PostgreSQL版向量資料庫。本文介紹使用Java、Python和C語言三種用戶端的接入方式。
Java
雲原生資料倉儲AnalyticDB PostgreSQL版向量資料庫支援使用PostgreSQL或Greenplum的JDBC驅動包串連。JDBC串連資料庫的操作,請參見JDBC。
在確保有PostgreSQL JDBC驅動的前提下,如果您使用Maven,可以在pom.xml檔案中添加以下依賴:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.5</version>
</dependency>通過Java代碼訪問向量資料庫的範例程式碼如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class GreenplumSample {
public static void main(String[] args) {
String url = "jdbc:postgresql://yourhost:yourport/yourdbname";
String user = "yourusername";
String password = "yourpassword";
try {
// 載入驅動
Class.forName("org.postgresql.Driver");
// 建立串連
Connection con = DriverManager.getConnection(url, user, password);
// 建立語句
Statement st = con.createStatement();
// 執行查詢
String query = "SELECT * FROM yourtable LIMIT 10";
ResultSet rs = st.executeQuery(query);
// 處理結果
while(rs.next()) {
// 假設知道結果集中至少有一列,且為字串類型
String resultColumn = rs.getString(1);
System.out.println(resultColumn);
}
// 關閉資源
rs.close();
st.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Python
雲原生資料倉儲AnalyticDB PostgreSQL版向量資料庫可以使用psycopg2工具串連,並通過Python代碼匯入和查詢向量資料。psycopg2串連資料庫的操作,請參見Python。
通過python代碼訪問向量資料庫的範例程式碼如下:
import psycopg2
from psycopg2 import pool
# 建立串連池
connection_pool = psycopg2.pool.SimpleConnectionPool(
minconn=1,
maxconn=10,
user='your_username',
password='your_password',
host='your_host',
port='your_port',
database='your_database'
)
# 串連探活檢查
def is_connection_alive(conn):
try:
conn.cursor().execute("SELECT 1")
except (psycopg2.OperationalError, psycopg2.InterfaceError):
return False
return True
# 從串連池擷取連線物件
def get_connection():
conn = connection_pool.getconn()
while not is_connection_alive(conn):
conn = connection_pool.getconn()
return conn
# 將連線物件放回串連池
def release_connection(conn):
connection_pool.putconn(conn)
# 使用連線物件執行查詢
def execute_query(query):
conn = get_connection()
cursor = conn.cursor()
try:
cursor.execute(query)
if query.startswith("SELECT"):
result = cursor.fetchall()
else:
conn.commit()
result = None
except (psycopg2.DatabaseError, psycopg2.InterfaceError) as e:
print(f"Error executing query: {e}")
conn.rollback()
result = None
cursor.close()
release_connection(conn)
return result
# 樣本查詢
# 查詢
select_query = "SELECT * FROM your_table"
result = execute_query(select_query)
if result:
print(result)
# 插入
insert_query = "INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')"
execute_query(insert_query)
# 更新
update_query = "UPDATE your_table SET column1 = 'new_value' WHERE column2 = 'value2'"
execute_query(update_query)
# 刪除
delete_query = "DELETE FROM your_table WHERE column1 = 'value1'"
execute_query(delete_query)C
雲原生資料倉儲AnalyticDB PostgreSQL版向量資料庫可以使用libpq庫串連,並使用C語言代碼匯入和查詢向量資料。
通過C語言代碼訪問向量資料庫的範例程式碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
int main() {
const char *conninfo;
PGconn *conn;
PGresult *res;
int nFields;
int i, j;
// 設定連接字串
conninfo = "dbname=yourdbname user=yourusername host=yourhostname port=yourport password=yourpassword";
// 建立串連
conn = PQconnectdb(conninfo);
// 檢查狀態
if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "串連失敗: %s", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
// 執行一個查詢
res = PQexec(conn, "SELECT * FROM yourtablename LIMIT 10");
// 檢查是否正常返回了結果集
if (PQresultStatus(res) != PGRES_TUPLES_OK) {
fprintf(stderr, "SELECT命令未返回資料: %s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
// 擷取欄位數
nFields = PQnfields(res);
// 列印每一行
for (i = 0; i < PQntuples(res); i++) {
for (j = 0; j < nFields; j++) {
printf("%s = %s", PQfname(res, j), PQgetvalue(res, i, j));
}
printf("\n");
}
// 清理
PQclear(res);
// 關閉串連
PQfinish(conn);
return 0;
}
相關文檔
如果有更多其他語言用戶端的使用需求,請參見pgvector相容模式使用指南。