blob: 57b6bda70996fc90e6f0129908eacb7ec79dff7c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
`brew install postgresql`
_В автозагрузку:_
`brew services start postgresql`
_Запуск вручную:_
`pg_ctl -D /usr/local/var/postgresql start`
_Перезагрузка:_
`brew services restart postgresql`
_Проверка версии:_
`brew info postgresql`
_Инициализация по умолчанию:_
`initdb --locale=C -E UTF-8 /opt/homebrew/var/postgresql@14`
_Экспортировать переменную:_
`export PATH=/opt/homebrew/bin:$PATH`
_Если автозагрузка не сработает, директория здесь:_
`~/Library/LaunchAgents`
_Создаем симлинк:_
`ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents`
_Добавляем в автозагрузку:_
`launchctl load ~/Library?LaunchAgents/homebrew.mxcl.postgresql.plist`
_Подключение к БД на MacOS (отличается от Linux). Проверяем пользователей:_
`psql -l`
![[Pasted image 20240312221215.png]]
_Для подключения указываем Owner из таблицы выше:_
`sudo psql -U vlapa -d postgres`
_Создаем пользователя с паролем (сначала подключаемся как описано выше):_
`CREATE USER ploshadka WITH PASSWORD '123456';`
_Назначаем ему кодировку:_
`ALTER ROLE ploshadka SET client_encoding TO 'utf8';`
_Создаем БД для русской локали, чтобы была возможность поиска:_
`CREATE DATABASE dbname TEMPLATE=template0 ENCODING 'UTF-8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';`
_Назначаем этому пользователю новую БД:_
`GRANT ALL PRIVILEGES ON DATABASE dbname TO ploshadka;`
_проверим по таблице все-ли верно:_
`\list`
_Как подключиться (на localhost достаточно создать БД и подключиться к ней указав только имя):_
`dbname='stocks'`
_Остальное подхватится по умолчанию._
### Узнаем размер БД:
_Заходим на сервер в оболочку Postgres:_
`sudo psql -U vlapa -d postgres`
_Проверяем размер:_
`SELECT pg_size_pretty(pg_database_size('vlapa_db'));`
### Узнаем размеры таблиц:
_Находясь в оболочке Postgres входим в нужную БД:_
`\c vlapa_db`
_Вводим команду отсортировать таблицы по большему размеру:_
```bash
SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size(C.oid) DESC
LIMIT 20;
```
##################################################
_PostgreSQL - SQL команды:_
Как добавить колонку в правильное место:
```bash
alter table tablename rename to oldtable;
create table tablename (column defs go here);
insert into tablename (col1, col2, col3) select col1, col2, col3 from oldtable;
```
_Как добавить колонку в конец:_
```sh
ALTER TABLE portfolio ADD COLUMN price_diff_open_current FLOAT NULL;
```
_Переименовать таблицу:_
```sh
alter table portfolio rename column lots to quantity;
```
_Обновить всю колонку одним значением:_
```sh
UPDATE operations SET user_id='1'
```
_Переименовать базу данных:_
```sh
alter database "stocks" rename to "captures";
```
|