創(chuàng)建PostgreSQL數(shù)據(jù)庫最佳實(shí)踐

      網(wǎng)友投稿 1390 2022-05-30

      1 創(chuàng)建數(shù)據(jù)庫

      本文將介紹購買云數(shù)據(jù)庫RDS實(shí)例后,如何通過數(shù)據(jù)管理服務(wù)DAS或命令行創(chuàng)建數(shù)據(jù)庫,以及創(chuàng)建數(shù)據(jù)庫過程中的注意事項(xiàng)。

      1.1 數(shù)據(jù)庫命名規(guī)范

      postgresql的關(guān)鍵字長度不能超過63個(gè)字節(jié),因此建議業(yè)務(wù)側(cè)的數(shù)據(jù)庫名的長度不超過30個(gè)字符;

      數(shù)據(jù)庫命名建議僅使用小寫字母、下劃線、數(shù)字這三類字符。禁止以pg、數(shù)字、下劃線開頭,禁止使用保留字,保留字請參考官方文檔。

      1.2 通過DAS圖形化向?qū)?chuàng)建數(shù)據(jù)庫

      步驟 1 登錄管理控制臺。

      步驟 2 單擊管理控制臺左上角,選擇區(qū)域和項(xiàng)目。

      步驟 3 選擇“數(shù)據(jù)庫 > 云數(shù)據(jù)庫 RDS”。進(jìn)入云數(shù)據(jù)庫 RDS信息頁面。

      步驟 4 “實(shí)例管理”頁面,選擇目標(biāo)實(shí)例,單擊操作列的“登錄”,進(jìn)入數(shù)據(jù)管理服務(wù)實(shí)例登錄界面。

      您也可以在“實(shí)例管理”頁面,單擊目標(biāo)實(shí)例名稱,在頁面右上角,單擊“登錄”,進(jìn)入數(shù)據(jù)管理服務(wù)實(shí)例登錄界面。

      步驟 5 正確輸入數(shù)據(jù)庫用戶名和密碼,單擊“登錄”,即可進(jìn)入您的數(shù)據(jù)庫并進(jìn)行管理。

      步驟 6 進(jìn)入首頁,單擊“新建數(shù)據(jù)庫”,在彈出框填寫數(shù)據(jù)庫名稱、字符集、數(shù)據(jù)庫模板、Collate、Ctype等,詳細(xì)信息請參考1.3節(jié) 參數(shù)說明。

      步驟 7 確認(rèn)填寫信息正確后,單擊“確定”。

      1.3 通過命令行創(chuàng)建數(shù)據(jù)庫

      創(chuàng)建數(shù)據(jù)庫時(shí),您可以指定模板庫,并為每個(gè)數(shù)據(jù)庫設(shè)置不同的字符集、本地化collate等屬性。

      通過數(shù)據(jù)管理服務(wù)DAS查詢窗口、psql或者pgadmin等工具連接到數(shù)據(jù)庫(本章節(jié)以數(shù)據(jù)管理服務(wù)DAS查詢窗口為例),使用命令行示例來介紹如何通過CREATE DATABASE命令設(shè)置。

      本土化信息collate包括LC_COLLATE(字符排序規(guī)則) 和 LC_CTYPE(字符分類),詳細(xì)介紹請參考官方文檔。

      語法格式

      CREATE DATABASE name

      [ [ WITH ] [ OWNER [=] user_name ]

      [ TEMPLATE [=] template ]

      [ ENCODING [=] encoding ]

      [ LC_COLLATE [=] lc_collate ]

      [ LC_CTYPE [=] lc_ctype ]

      [ TABLESPACE [=] tablespace_name ]

      [ ALLOW_CONNECTIONS [=] allowconn ]

      [ CONNECTION LIMIT [=] connlimit ]

      [ IS_TEMPLATE [=] istemplate ] ]

      操作步驟

      步驟 1 登錄管理控制臺。

      創(chuàng)建PostgreSQL數(shù)據(jù)庫最佳實(shí)踐

      步驟 2 單擊管理控制臺左上角的,選擇區(qū)域和項(xiàng)目。

      步驟 3 選擇“數(shù)據(jù)庫 > 云數(shù)據(jù)庫 RDS”。進(jìn)入云數(shù)據(jù)庫 RDS信息頁面。

      步驟 4 在“實(shí)例管理”頁面,選擇目標(biāo)實(shí)例,單擊操作列的“登錄”,進(jìn)入數(shù)據(jù)管理服務(wù)登錄界面。

      步驟 5 正確輸入數(shù)據(jù)庫用戶名和密碼,單擊“登錄”,即可進(jìn)入您的數(shù)據(jù)庫。

      步驟 6 在“SQL窗口”輸入命令創(chuàng)建數(shù)據(jù)庫。

      create database 數(shù)據(jù)庫名;

      參數(shù)說明

      TEMPLATE

      PostgreSQL數(shù)據(jù)庫默認(rèn)有template0、template1兩個(gè)模板,默認(rèn)模板為template1,使用template1模板庫建庫時(shí)不可指定新的字符集,否則會(huì)報(bào)錯(cuò)。用戶也可以指定其他的自定義模板創(chuàng)建數(shù)據(jù)庫。

      ENCODING

      創(chuàng)建數(shù)據(jù)庫時(shí)可以通過WITH ENCODING指定字符集,字符集含義及支持的字符集類型請參考官方文檔。

      LC_COLLATE

      字符排序規(guī)則,默認(rèn)en_US.utf8。

      不同的排序規(guī)則下,相同字符串的比較其結(jié)果可能是不同的。

      例如,在en_US.utf8下, SELECT 'a'>'A'; 執(zhí)行結(jié)果為false,但在'C'下,SELECT 'a'>'A'; 結(jié)果為true。如果數(shù)據(jù)庫從“O”遷移到PostgreSQL,數(shù)據(jù)庫排序集需使用'C'才能得到一致的預(yù)期。支持的排序規(guī)則可以查詢系統(tǒng)表 pg_collation。

      LC_CTYPE

      字符集中的字符分類,用來區(qū)分字母、數(shù)字、及大小寫等,支持的字符分類可以查詢系統(tǒng)表 pg_collation。

      其余參數(shù)請參考官方文檔,此章節(jié)不再贅述。

      參數(shù)使用方式

      通過TEMPLATE指定數(shù)據(jù)庫模板

      使用 template1 模板庫建庫時(shí)不可指定新的字符集和本地化collate屬性,collate屬性請參見?1.3節(jié) 設(shè)置數(shù)據(jù)庫的本土化信息(collate)。

      CREATE DATABASE my_db WITH TEMPLATE template1 ;

      使用template0可指定字符集和本地化collate屬性,collate屬性請參見?1.3節(jié) 設(shè)置數(shù)據(jù)庫的本土化信息(collate)。

      CREATE DATABASE my_db WITH ENCODING = 'UTF8' LC_COLLATE ='zh_CN.utf8' LC_CTYPE ='zh_CN.utf8' TEMPLATE = template0 ;

      創(chuàng)建數(shù)據(jù)庫時(shí)不指定模板,則默認(rèn)模板為template1。用戶也可以指定其他的自定義模板創(chuàng)建數(shù)據(jù)庫。

      CREATE DATABASE my_db WITH TEMPLATE = mytemplate;

      通過WITH ENCODING指定字符集

      CREATE DATABASE my_db WITH ENCODING 'UTF8';

      LC_COLLATE和LC_CTYPE

      查詢字符集支持的LC_COLLATE和LC_CTYPE信息

      SELECT pg_encoding_to_char(collencoding) AS encoding,collname,collcollate AS "LC_COLLATE",collctype AS "LC_CTYPE" FROM pg_collation;

      encoding為空時(shí),表示當(dāng)前LC_COLLATE支持所有的字符集。

      設(shè)置數(shù)據(jù)庫的本土化信息(collate)

      執(zhí)行如下命令,創(chuàng)建一個(gè) LC_COLLATE 和 LC_CTYPE 分別為 zh_CN.utf8 的數(shù)據(jù)庫。

      CREATE DATABASE my_db WITH ENCODING = 'UTF8' LC_COLLATE ='zh_CN.utf8' LC_CTYPE ='zh_CN.utf8' TEMPLATE = template0 ;

      如果指定的LC_COLLATE與字符集不兼容,則會(huì)報(bào)如下錯(cuò)誤信息。

      1. 指定的LC_COLLATE和LC_CTYPE必須與目標(biāo)字符集兼容,參考?1.4.1節(jié) 查詢字符集支持的LC_COLLATE和..查詢出的字符集,否則會(huì)報(bào)錯(cuò)。

      2. 目前無法直接通過ALTER DATABASE命令修改已有數(shù)據(jù)庫的LC_COLLATE和LC_CTYPE信息,但可以通過創(chuàng)建新的數(shù)據(jù)庫,然后導(dǎo)出再導(dǎo)入數(shù)據(jù)的方式進(jìn)行修改。

      1.4 常見問題

      1.4.1 如何查看已經(jīng)創(chuàng)建的數(shù)據(jù)庫以及數(shù)據(jù)庫的字符集、LC_COLLATE和LC_CTYPE信息?

      通過psql元命令\ l,可以查看已經(jīng)創(chuàng)建的數(shù)據(jù)庫。

      通過查詢系統(tǒng)表pg_database。

      1.4.2 創(chuàng)建數(shù)據(jù)庫時(shí)報(bào)字符集與locale不匹配如何解決?

      選擇與字符集不匹配的LC_COLLATE創(chuàng)建數(shù)據(jù)庫時(shí)會(huì)報(bào)如下錯(cuò)誤。

      CREATE DATABASE my_db2 WITH LC_COLLATE ='zh_SG' LC_CTYPE ='zh_SG' ;

      解決方法:

      查詢模板庫支持的字符集,查詢方法見?1.4.1節(jié) 查詢支持的字符集,默認(rèn)模板庫為template1。

      查詢模板庫字符集支持的LC_COLLATE信息,查詢方法見?1.3節(jié) 設(shè)置數(shù)據(jù)庫的本土化信息(collate)。

      修改為與字符集匹配的LC_COLLATE,重新創(chuàng)建數(shù)據(jù)庫。

      1.4.3 從“O”遷移到PostgreSQL時(shí)如何選擇排序規(guī)則?

      PostgreSQL數(shù)據(jù)庫服務(wù)端不支持gbk,默認(rèn)en_US.utf8。從“O”遷移到PostgreSQL,排序規(guī)則選擇'C'才能得到一致的預(yù)期。

      PostgreSQL 云數(shù)據(jù)庫 PostgreSQL 數(shù)據(jù)庫

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:軟件開發(fā)流變史:從瀑布開發(fā)到敏捷開發(fā)再到DevOps
      下一篇:移動(dòng)端響應(yīng)式布局開發(fā)設(shè)計(jì)
      相關(guān)文章
      亚洲邪恶天堂影院在线观看| 伊人久久综在合线亚洲91| 亚洲AV无码国产精品色午友在线 | avtt亚洲天堂| 理论亚洲区美一区二区三区| 亚洲av永久中文无码精品综合 | 亚洲日韩中文字幕无码一区| 亚洲日本中文字幕天天更新| 亚洲综合国产成人丁香五月激情| 亚洲va成无码人在线观看| 亚洲二区在线视频| 亚洲成人网在线观看| 亚洲国产精品白丝在线观看| 亚洲欧洲高清有无| 日本红怡院亚洲红怡院最新| 亚洲av午夜福利精品一区| 亚洲成在人天堂在线| 91亚洲一区二区在线观看不卡| 亚洲AV无码成人精品区蜜桃| 亚洲天堂一区二区| 亚洲综合免费视频| 亚洲AV成人无码天堂| 久久夜色精品国产噜噜亚洲a| 亚洲国产日韩a在线播放| 国产亚洲精品第一综合| 亚洲综合精品网站| 精品久久香蕉国产线看观看亚洲| 亚洲精品免费视频| 亚洲国产精品久久人人爱| 亚洲中文字幕无码久久2020 | 亚洲乱码日产一区三区| 亚洲av最新在线网址| 久久久久亚洲精品日久生情| 亚洲国产精品乱码在线观看97| 亚洲综合av一区二区三区不卡| 久久亚洲精品11p| 亚洲日韩中文在线精品第一| 久久国产亚洲精品麻豆| 亚洲理论片中文字幕电影| 亚洲熟妇自偷自拍另欧美| 亚洲国产成人乱码精品女人久久久不卡 |