Revision 292
- Date:
- 2013/03/23 13:45:29
- Files:
Legend:
- Added
- Removed
- Modified
-
utf8/core/services/dumper_2_json.pl
1 #!/usr/bin/perl 2 3 use strict; 4 use warnings "all"; 5 use locale; 6 7 use FindBin; 8 BEGIN { 9 require "$FindBin::RealBin/../lib/Modules.pm"; 10 } 11 12 use Contenido::Globals; 13 use Contenido::Init; 14 use ErrorTee; 15 use PidFile; 16 use Data::Dumper; 17 use JSON::XS; 18 19 # begin 20 Contenido::Init->init(); 21 22 my $keeper_module = $state->project.'::Keeper'; 23 $keeper = $keeper_module->new($state); 24 25 #PidFile->new($keeper, compat=>1); # db-based locking (run only on one host) 26 #PidFile->new($keeper, compat=>1, per_host=>1); # db-based locking (run on whole cluster) 27 28 ############################################ 29 # please use: 30 # $state->{log_dir} for logging 31 # $state->{tmp_dir} for temporary files 32 ########################################### 33 my $table = $ARGV[0] || 'sections'; 34 my $LIMIT = 10; 35 my $OFFSET = 0; 36 my $json = JSON::XS->new; 37 38 print "Alter table:\n"; 39 my $res = $keeper->SQL->do("alter table $table add column data__json text"); 40 print "Reading from $table...\n"; 41 my $i = 2; 42 while ( $i ) { 43 my $sql = $keeper->SQL->prepare("select id, data from $table order by id limit $LIMIT offset $OFFSET"); 44 my $res = $sql->execute; 45 if ( $res ne '0E0' ) { 46 while ( my $ln = $sql->fetchrow_hashref ) { 47 next unless $ln->{data}; 48 my $VAR1; eval "$ln->{data}"; 49 my $STRUCT = $VAR1; 50 print Dumper $STRUCT; 51 if ( ref $STRUCT eq 'HASH' ) { 52 while ( my ($field, $val) = each %$STRUCT ) { 53 if ( $val && $val =~ /\$VAR1/ ) { 54 my $VAL = eval "$val"; 55 if ( ref $VAL ) { 56 print Dumper $VAL; 57 $STRUCT->{$field} = $json->encode($VAL); 58 } 59 } 60 } 61 } 62 my $DATA = Encode::decode('utf-8', $json->encode( $STRUCT )); 63 my $store = $keeper->SQL->prepare("update $table set data__json = ? where id = ?"); 64 $store->execute( $DATA, $ln->{id} ); 65 } 66 } else { 67 print "Stop\n"; 68 last; 69 } 70 $OFFSET += $LIMIT; 71 } 72 print "Rename column [data] to [data__dumper]\n"; 73 $keeper->SQL->do("alter table $table rename COLUMN data TO data__dumper"); 74 print "Rename column [data__json] to [data]\n"; 75 $keeper->SQL->do("alter table $table rename COLUMN data__json TO data"); -
utf8/core/skel/project/config.mk.proto
13 13 BASE_USER = @NAME@ 14 14 BASE_PASSWD = 15 15 16 SERIALIZE_WITH = json 17 16 18 # Custom Apache handler 17 19 #DEFAULT_HANDLER = HTML::Mason::ApacheHandler 18 20 -
utf8/core/skel/project/services/dumper_2_json.pl
1 #!/usr/bin/perl 2 3 use strict; 4 use warnings "all"; 5 use locale; 6 7 use FindBin; 8 BEGIN { 9 require "$FindBin::RealBin/../lib/Modules.pm"; 10 } 11 12 use Contenido::Globals; 13 use Contenido::Init; 14 use ErrorTee; 15 use PidFile; 16 use Data::Dumper; 17 use JSON::XS; 18 19 # begin 20 Contenido::Init->init(); 21 22 my $keeper_module = $state->project.'::Keeper'; 23 $keeper = $keeper_module->new($state); 24 25 #PidFile->new($keeper, compat=>1); # db-based locking (run only on one host) 26 #PidFile->new($keeper, compat=>1, per_host=>1); # db-based locking (run on whole cluster) 27 28 ############################################ 29 # please use: 30 # $state->{log_dir} for logging 31 # $state->{tmp_dir} for temporary files 32 ########################################### 33 my $table = $ARGV[0] || 'sections'; 34 my $LIMIT = 10; 35 my $OFFSET = 0; 36 my $json = JSON::XS->new; 37 38 print "Alter table:\n"; 39 my $res = $keeper->SQL->do("alter table $table add column data__json text"); 40 print "Reading from $table...\n"; 41 my $i = 2; 42 while ( $i ) { 43 my $sql = $keeper->SQL->prepare("select id, data from $table order by id limit $LIMIT offset $OFFSET"); 44 my $res = $sql->execute; 45 if ( $res ne '0E0' ) { 46 while ( my $ln = $sql->fetchrow_hashref ) { 47 next unless $ln->{data}; 48 my $VAR1; eval "$ln->{data}"; 49 my $STRUCT = $VAR1; 50 print Dumper $STRUCT; 51 if ( ref $STRUCT eq 'HASH' ) { 52 while ( my ($field, $val) = each %$STRUCT ) { 53 if ( $val && $val =~ /\$VAR1/ ) { 54 my $VAL = eval "$val"; 55 if ( ref $VAL ) { 56 print Dumper $VAL; 57 $STRUCT->{$field} = $json->encode($VAL); 58 } 59 } 60 } 61 } 62 my $DATA = Encode::decode('utf-8', $json->encode( $STRUCT )); 63 my $store = $keeper->SQL->prepare("update $table set data__json = ? where id = ?"); 64 $store->execute( $DATA, $ln->{id} ); 65 } 66 } else { 67 print "Stop\n"; 68 last; 69 } 70 $OFFSET += $LIMIT; 71 } 72 print "Rename column [data] to [data__dumper]\n"; 73 $keeper->SQL->do("alter table $table rename COLUMN data TO data__dumper"); 74 print "Rename column [data__json] to [data]\n"; 75 $keeper->SQL->do("alter table $table rename COLUMN data__json TO data");