Re: script to drop and create all indexes in a database with parameter concurrently
От | reiner peterke |
---|---|
Тема | Re: script to drop and create all indexes in a database with parameter concurrently |
Дата | |
Msg-id | 853F093C-78F0-4C3B-9020-9D97023B2BDC@drizzle.com обсуждение исходный текст |
Ответ на | script to drop and create all indexes in a database with parameter concurrently ("Campbell, Lance" <lance@illinois.edu>) |
Список | pgsql-admin |
reiner
Below is a Linux script I wrote that will drop and create all of the indexes for your database with the “concurrently” parameter.
#!/bin/sh
dbhost=localhost
database=somedatabasename
dbschema=/tempfile/dbschema.txt
filtered=/tempfile/dbschema_filtered.txt
sql=/tempfile/rebuild_indexes.sql
rm "$dbschema"
rm "$filtered"
rm "$sql"
pg_dump -s -h "$dbhost" "$database" > "$dbschema"
grep -e CREATE\ INDEX -e SET\ search_path "$dbschema" | sed 's/CREATE\ INDEX/CREATE\ INDEX\ CONCURRENTLY/g' > "$filtered"
while read p; do
if [[ "$p" == SET* ]]; then
echo $p >> "$sql"
else
name=$(cut -d\ -f4 <<<"${p}")
drop="DROP INDEX $name;"
echo $drop >> "$sql"
echo $p >> "$sql"
fi
done < "$filtered"
psql -U ows -h "$dbhost" -d "$database" -f "$sql"
rm "$dbschema"
rm "$filtered"
rm "$sql"
Thanks,
Software Architect
Web Services at Public Affairs
217-333-0382
В списке pgsql-admin по дате отправления: