I had a problem with PostgreSQL pgdump recently. My setval() calls were all set to '1'.

I wrote this script to fix things:

#!/usr/bin/env python
DB_NAME = 'my_db'

from subprocess import Popen, PIPE
import re

exclude = [ 'tablename', 'rows' ]
tp = re.compile( '[^a-z_]' )
ts = Popen( [ "/usr/bin/psql", DB_NAME, "-c SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg_%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename" ], stdout=PIPE ).communicate()[ 0 ].split( ' ' )

tables = []
for t in ts:
    t = tp.sub( '', t )
    if len( t ) == 0 or t in exclude:
        continue
    tables.append( t )

for t in tables:
    sql = "SELECT pg_catalog.setval( pg_get_serial_sequence( '%s', 'id' ), ( SELECT MAX( id ) FROM %s ) + 1 );" % ( t, t )
    print Popen( [ "/usr/bin/psql", DB_NAME, "-c %s" % sql ], stdout=PIPE ).communicate()[ 0 ]

   Recent articles
Blackjack Written in C using SDL
Console Blackjack Written in C
Console Blackjack Written in Perl 6
How-to build latest Linux kernel from Linus' git repo on Debian/Ubuntu
Console Blackjack in C++
   Tags
apache (1) bash (2) bashrc (1) blackjack (5) c (2) c11 (1) callproof (1) clang (3) console (4) cpp (1) data (1) debian (3) diff (1) django (2) games (1) gcc (3) git (2) github (1) gitlab (5) gmail (1) go-lang (3) google (1) gourse (1) kernel (3) latin1 (1) linux (3) lottery (1) module (1) mongodb (1) mp3s (1) mutt (1) patch (1) perl6 (1) postgresql (2) powerball (1) psql (1) python (2) raspberrypi (1) sdl (1) sed (1) testing (1) ubuntu (1) utf8 (1)
   Twitter

Copyright © 2018 · GregDonald.io · All Rights Reserved