cartodb-4.29/lib/tasks/cleanup_importer_tables.rake
2020-06-15 10:58:47 +08:00

34 lines
1.2 KiB
Ruby

namespace :cartodb do
namespace :db do
desc 'Moves left-over tables from failed imports from the public to the cdb_importer schema'
task :cleanup_importer_tables => :environment do
count = ::User.count
::User.all.each_with_index do |user, index|
puts "Cleaning up importer tables for #{user.username}"
begin
user.in_database.fetch(%Q(
SELECT table_name FROM information_schema.tables
AS table_name
WHERE table_schema = 'public'
AND table_name ~ 'importer_\\w{32}'
)).map { |record|
@table_name = record.fetch(:table_name)
user.in_database.run(%Q{
DROP TABLE IF EXISTS "cdb_importer"."#{@table_name}"
})
user.in_database.run(%Q{
ALTER TABLE "public"."#{@table_name}"
SET SCHEMA "cdb_importer"
})
puts "------ moved #{@table_name} from user #{user.username}"
}
printf "OK %-#{20}s (%-#{4}s/%-#{4}s)\n", user.username, index, count
rescue => exception
printf "FAIL %-#{20}s (%-#{4}s/%-#{4}s) #{exception.message}\n", user.username, index, count
end
sleep(1.0/5.0)
end
end
end
end