開啟向量引擎優化功能后,您可以通過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版向量數據庫可以使用libpg庫連接,并使用C語言代碼導入和查詢向量數據。libpg連接數據庫的操作,請參見libpq。
通過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兼容模式使用指南。
文檔內容是否對您有幫助?