database scripts for tasks required regularly

This commit is contained in:
Ulf Gebhardt 2026-02-03 08:11:46 +01:00
parent 6da1893078
commit 497a39a560
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
3 changed files with 13 additions and 41 deletions

View File

@ -54,48 +54,9 @@ docker exec -t utopia-map-database-1 pg_dumpall -c -U directus > dump.sql
Assuming you run docker-compose with the default postgress credentials and have the dump in cwd as ./dump.sql, execute:
Find current schema name:
Drop database:
```
echo "SELECT CURRENT_SCHEMA, CURRENT_SCHEMA();" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
```
> current_schema | current_schema
> ----------------+----------------
> public | public
> (1 row)
Drop schemata (loses all data):
```
echo "DROP SCHEMA public CASCADE;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
echo "DROP SCHEMA tiger CASCADE;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
echo "DROP SCHEMA tiger_data CASCADE;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
echo "DROP SCHEMA topology CASCADE;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
```
> drop cascades to table ...
> ...
> DROP SCHEMA
Create the public schema again:
```
echo "CREATE SCHEMA public;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
```
Verify schemata:
```
echo "select schema_name from information_schema.schemata;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus"
```
Verify database is empty:
```
echo "\dt" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus directus"
```
> Did not find any relations.
Create admin role & grant it:
```
echo "CREATE ROLE admin;" | docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql --username directus directus"
docker exec -i utopia-map-database-1 /bin/bash -c "PGPASSWORD=directus psql -v ON_ERROR_STOP=1 --username directus directus" < ./backend/scripts/drop-database.sql
```
Apply dump:

View File

@ -0,0 +1,8 @@
-- CAUTION: THIS SCRIPT DROPS ALL DATA IN YOUR DATABASE!
DROP SCHEMA public CASCADE;
DROP SCHEMA tiger CASCADE;
DROP SCHEMA tiger_data CASCADE;
DROP SCHEMA topology CASCADE;
CREATE SCHEMA public;
CREATE ROLE admin;

View File

@ -0,0 +1,3 @@
-- Selects passwords and emails and creates a script to update user passwords in a database.
-- This is used to port users between instances as directus cannot import user passwords
SELECT CONCAT('UPDATE public.directus_users SET password=''', password, ''' WHERE email=''', email, ''';') FROM public.directus_users;