ui設(shè)計(jì)方向網(wǎng)站建設(shè)目標(biāo)深圳網(wǎng)站設(shè)計(jì)專業(yè)樂云seo
環(huán)境變量修改
- 打開 .bashrc 文件進(jìn)行編輯:
vim ~/.bashrc
- 在文件的末尾添加上面的環(huán)境變量配置
# 添加 PostgreSQL 可執(zhí)行文件路徑到系統(tǒng) PATH
export PATH=/home/....../pg/postgresql-12.4/bin:$PATH# 設(shè)置 PostgreSQL 數(shù)據(jù)目錄
export PGDATA=/home/....../pg/postgresql-12.4/data# 設(shè)置 PostgreSQL 庫文件路徑
export LD_LIBRARY_PATH=/home/....../pg/postgresql-12.4/lib:$LD_LIBRARY_PATH# 自定義 PostgreSQL 端口號(可選)
export PGPORT=5333 # 如果不需要自定義端口,可以改為 5432 或刪除這行
3.保存并退出 .bashrc,然后使配置立即生效:
source ~/.bashrc
Postgresql安裝與鏈接
解壓成功后顯示
ls
postgresql-12.4 postgresql-12.4.tar.gz
進(jìn)入到postgresql-12.4目錄編譯安裝
# 制定編譯工具
./configure --prefix=/home/....../pg --enable-depend --enable-cassert --enable-debug CFLAGS=-O0# 編譯安裝make && make install
- prefix:安裝在自己的目錄下
注意:CFLAGS建議加上面這個-O0選擇,這樣可以調(diào)試更多內(nèi)容,方便后續(xù)GDB進(jìn)行調(diào)試,否則后續(xù)進(jìn)行學(xué)習(xí)的時(shí)候會重新安裝PGSQL。
cd ../ cd pg cd bin
2、初始化數(shù)據(jù)庫簇 (在postgresql-12.4目錄下創(chuàng)建data文件夾)
./initdb -D ../data
3、啟動數(shù)據(jù)庫
./pg_ctl -D ../ data -l logfile start ./psql postgres
配置環(huán)境變量后,可直接使用 :
啟動 PostgreSQL
pg_ctl start
停止 PostgreSQL
pg_ctl stop
如果是手動安裝的 PostgreSQL,可以使用 pg_ctl:
/home/....../pg/postgresql-12.4/bin/pg_ctl -D /home/....../pg/postgresql-12.4/data stop
連接到 PostgreSQL 數(shù)據(jù)庫
使用 psql 命令行工具連接到 PostgreSQL 數(shù)據(jù)庫:
psql -U username -d dbname
例如,使用用戶 username 連接到 postgres 數(shù)據(jù)庫:
psql -U username -d postgres
如果沒有指定數(shù)據(jù)庫名,psql 會嘗試連接與當(dāng)前用戶同名的數(shù)據(jù)庫。
斷開連接(退出 psql 控制臺)
使用以下命令退出 psql 控制臺:
\q
PGSQL的使用
使用 \l 用于查看已經(jīng)存在的數(shù)據(jù)庫;使用 \c + 數(shù)據(jù)庫名 來進(jìn)入數(shù)據(jù)庫;\d 命令來查看表格;\d tablename 查看表格信息;
pgvector安裝
tar -zxvf pgvector-0.7.0.tar.gzcd pgvector-0.7.0
# 安裝調(diào)試版本CFLAGS="g" PG_CFLAGS="-DDISABLE_DISPATCH" make && make install
之后進(jìn)入到postgresql服務(wù)器里面,使用
create extension vector;
創(chuàng)建Vevtor插件。
使用如下代碼可以快速在表中生成大量的向量:
create or replace function gen_float4_arr1(int,int) returns float4[] as $$ select array_agg(trunc(random()*$1)::float4) from generate_series(1,$2);
$$ language sql strict volatile; create or replace function gen_float4_arr(float4[], int) returns float4[] as $$ select array_agg( (u + (u*$2/2.0/100) - u*$2/100*random())::float4 ) from unnest($1) u;
$$ language sql strict volatile;
創(chuàng)建表,id要用serial
create table if not exists v( id serial PRIMARY KEY, vec vector(10) -- 自己寫想要的維度,比如10
);
使用下面的代碼進(jìn)行向量的隨機(jī)生成:
do language plpgsql $$
declarev_cent float4[];
beginfor i in 1..10 loop -- 10個中心點(diǎn),下面一次插1k條,那就是1萬,自己想怎么改怎么改v_cent := gen_float4_arr1(10000,10); -- 取值范圍10000,表是什么維度,這里就寫多少insert into v (vec) select gen_float4_arr(v_cent, 20)::vector(10) from generate_series(1,1000); -- 1萬個點(diǎn)圍繞一個中心點(diǎn), 每個維度的值隨機(jī)加減20% ,10000,20也都可以改end loop;
end;
$$;