#在目标MySQL上创建对应的数据库
$target->do("DROP DATABASE IF EXISTS `$db`;") or die "Cannot drop old database $dbn";
$target->do("CREATE DATABASE `$db` DEFAULT CHARSET = utf8 COLLATE utf8_general_ci;") or die "Cannot create database $dbn";
$target->disconnect;
$src->disconnect;
my $total_start = time;
for my $table(@tables)
{
my $pid = fork;
unless($pid)
{
($src, $target) = db_connect;
my $start = time;
$src->do("USE $db;");
#获取表结构,用来生成MySQL用的DDL
my $q_schema = $src->prepare("SELECT COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ? ORDER BY ORDINAL_POSITION;");
$target->do("USE `$db`;");
$target->do("SET NAMES utf8;");
my $key_column = $keys{$table};
my $ddl = "CREATE TABLE `$table` ( n";
$q_schema->execute($table);
my @fields = ();
while(my @row = $q_schema->fetchrow_array)
{
my ($column, $nullable, $datatype, $length) = @row;
my $field = "`$column` $datatype";
$field .= "($length)" if $length;
$field .= " PRIMARY KEY" if $key_column eq $column;
push @fields, $field;
}
$ddl .= join(",n", @fields);
$ddl .= "n) ENGINE = MyISAM;nn";
$target->do($ddl) or die "Cannot create table $tablen";
#创建索引
my $indices = $table_indices{$table};
if($indices)
{
for(@$indices)
{
$target->do("CREATE INDEX `$_` ON `$table`(`$_`);n") or die "Cannot create index on $db.$table$.$_n";









