فصل ۱: شروع — نصب، معماری و ابزارها

psql حرفه‌ای و ابزارهای گرافیکی (pgAdmin و DBeaver)

psql؛ ابزاری که روی هر سرور هست

ابزار گرافیکی راحت است، اما روی سرور تولید، در اسکریپت‌های بکاپ و در ساعت دو بامداد فقط psql دارید. فرمان‌هایی که با بک‌اسلش شروع می‌شوند را خود psql اجرا می‌کند (نه سرور) و نقطه‌ویرگول نمی‌خواهند.

psql -h 127.0.0.1 -p 5432 -U app_user -d carpet
psql "postgresql://app_user@127.0.0.1:5432/carpet?sslmode=require"
psql -d carpet -c "SELECT count(*) FROM orders"
psql -d carpet -f schema.sql -v ON_ERROR_STOP=1

فرمان‌های بک‌اسلشی پرکاربرد

فرمانکار
\l / \c dbnameفهرست دیتابیس‌ها / اتصال به دیتابیس دیگر
\dn / \dt app.*schemaها / جدول‌های یک schema
\d+ ordersساختار کامل جدول: ستون‌ها، ایندکس‌ها، قیدها، triggerها، حجم
\du / \dproleها / مجوزهای جدول‌ها
\df+ name / \sf nameتوابع / نمایش کد یک تابع
\x autoنمایش عمودی خودکار وقتی ردیف در عرض صفحه جا نمی‌شود
\timing onنمایش زمان اجرای هر کوئری
\e / \ef nameباز کردن آخرین کوئری یا یک تابع در ویرایشگر
\watch 5اجرای دوباره‌ی آخرین کوئری هر ۵ ثانیه
\gxاجرای کوئری فعلی با خروجی عمودی (فقط همین یک بار)
\copyورود و خروج CSV از دید کلاینت

فایل ‎.psqlrc

این فایل در پوشه‌ی خانه (در ویندوز %APPDATA%\postgresql\psqlrc.conf) هر بار اجرا می‌شود:

\set QUIET 1
\pset null '(null)'
\x auto
\timing on
\set ON_ERROR_ROLLBACK interactive
\set HISTFILE ~/.psql_history- :DBNAME
\set PROMPT1 '%n@%/%R%# '
\unset QUIET

ابزارهای گرافیکی

pgAdmin ابزار رسمی و وب‌محور است؛ برای مدیریت roleها، مشاهده‌ی نشست‌ها و EXPLAIN گرافیکی خوب است. DBeaver چنددیتابیسی است و برای کسی که هم‌زمان با MySQL و SQL Server کار می‌کند راحت‌تر است؛ نمودار ER و ویرایش جدولی داده را هم دارد. در هر دو، تنظیم encoding اتصال را روی UTF8 و فونت ویرایشگر را روی فونتی با پشتیبانی فارسی (مثل Vazirmatn Code) بگذارید.

نکته‌هایی که کمتر کسی می‌داند

  • ON_ERROR_ROLLBACK interactive قبل از هر دستور یک SAVEPOINT مخفی می‌سازد؛ در حالت تعاملی یک غلط تایپی دیگر کل تراکنش باز را خراب نمی‌کند (خطای current transaction is aborted).
  • psql با گزینه‌ی -E کوئری‌های واقعی پشت فرمان‌های بک‌اسلشی را نشان می‌دهد؛ بهترین راه برای یاد گرفتن کاتالوگ سیستمی.
  • \copy فایل را روی ماشین کلاینت می‌خواند، اما COPY ... FROM '/path' فایل را روی سرور و با مجوز سرور؛ روی سرور راه دور تقریباً همیشه \copy می‌خواهید.
  • فایل ~/.pgpass (در ویندوز %APPDATA%\postgresql\pgpass.conf) با قالب host:port:db:user:password رمز را برای اسکریپت‌ها نگه می‌دارد؛ روی لینوکس مجوزش باید 600 باشد وگرنه نادیده گرفته می‌شود.
  • با \set متغیر بسازید و با :'name' به‌صورت رشته‌ی امن در کوئری بگذارید: \set city 'کاشان' و سپس WHERE city = :'city'.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.