[Rt-commit] r17797 - in rt/3.999/trunk: .
sunnavy at bestpractical.com
sunnavy at bestpractical.com
Sat Jan 17 06:00:46 EST 2009
Author: sunnavy
Date: Sat Jan 17 06:00:46 2009
New Revision: 17797
Modified:
rt/3.999/trunk/ (props changed)
rt/3.999/trunk/sbin/rt-migrate-db-from-3.8
Log:
r18860 at sunnavys-mb: sunnavy | 2009-01-17 17:39:07 +0800
go on refactor to make tmp db only for tables we need to alter
Modified: rt/3.999/trunk/sbin/rt-migrate-db-from-3.8
==============================================================================
--- rt/3.999/trunk/sbin/rt-migrate-db-from-3.8 (original)
+++ rt/3.999/trunk/sbin/rt-migrate-db-from-3.8 Sat Jan 17 06:00:46 2009
@@ -51,12 +51,19 @@
immediate_parent_id => 'immediate_parent',
);
+my @tables = qw/ACL Attachments Attributes CachedGroupMembers CustomFieldValues
+CustomFields GroupMembers Groups Links ObjectCustomFieldValues ObjectCustomFields Principals Queues ScripActions ScripConditions Scrips Templates Tickets
+Transactions Users sessions/;
+
+my $tables_need_change = 'ACL Principals Templates Scrips';
+my $tables_no_change = 'Attachments Attributes CachedGroupMembers CustomFieldValues CustomFields GroupMembers Groups Links ObjectCustomFieldValues ObjectCustomFields Queues ScripActions ScripConditions Tickets Transactions Users sessions';
+
if ( $args{'db-type'} eq 'mysql' ) {
$args{'dba'} ||= 'root';
# make a tmp rt3 db, with to-be-dropped columns dropped
my $tmp_rt3_db = "tmp_$args{'db-name-rt3'}_for_migration";
- my $dump_data = `mysqldump -u $args{'dba'} $args{'db-name-rt3'}`;
+ my $dump_data = `mysqldump -u $args{'dba'} $args{'db-name-rt3'} $tables_need_change`;
$dump_data .= 'alter table ACL drop column DelegatedBy;' . "\n";
$dump_data .= 'alter table ACL drop column DelegatedFrom;' . "\n";
$dump_data .= 'alter table Principals drop column ObjectId;' . "\n";
@@ -76,24 +83,36 @@
$run_sql->( '', "create database $tmp_rt3_db;\n" );
$run_sql->( $tmp_rt3_db, $dump_data );
- open my $fh, '-|',
- "mysqldump -u $args{'dba'} $tmp_rt3_db --complete-insert --no-create-info"
- or die $!;
-
- while ( <$fh> ) {
- next unless /^INSERT INTO/;
- my $insert = $_;
-
- # e.g. RT::Group -> RT::Model::Group
- $insert =~ s/'RT::(?!System|ScripAction)(\w+)\b/'RT::Model::$1/g;
- $insert =~ s/'Owner'/'owner'/g;
- $insert =~ s/'Requestor'/'requestor'/g;
- $insert =~ s/'Cc'/'cc'/g;
- $insert =~ s/'AdminCc'/'admin_cc'/g;
- $insert =~
+ my $insert = sub {
+ my $input_cmd = shift;
+
+ open my $fh, '-|', $input_cmd or die $!;
+
+ while (<$fh>) {
+ next unless /^INSERT INTO/;
+ my $insert = $_;
+
+ # e.g. RT::Group -> RT::Model::Group
+ $insert =~ s/'RT::(?!System|ScripAction)(\w+)\b/'RT::Model::$1/g;
+ $insert =~ s/'Owner'/'owner'/g;
+ $insert =~ s/'Requestor'/'requestor'/g;
+ $insert =~ s/'Cc'/'cc'/g;
+ $insert =~ s/'AdminCc'/'admin_cc'/g;
+ $insert =~
s/(?<!INSERT INTO )`(\w+)`/'`' . ($name_changes{renaming( $1)} || renaming($1)) . '`'/ge;
- $run_sql->( $args{'db-name-rt4'}, $insert );
- }
+ $run_sql->( $args{'db-name-rt4'}, $insert );
+ }
+ };
+
+# insert unchanged(actually, no so changed) tables from origion db
+ $insert->(
+"mysqldump -u $args{'dba'} $args{'db-name-rt3'} --complete-insert --no-create-info $tables_no_change"
+ );
+
+# import changed tables form tmp db
+ $insert->(
+"mysqldump -u $args{'dba'} $tmp_rt3_db --complete-insert --no-create-info"
+ );
$run_sql->( '', "drop database $tmp_rt3_db\n" );
More information about the Rt-commit
mailing list