成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Perl訪問MSSQL并遷移到MySQL數(shù)據(jù)庫腳本實例

Perl訪問MSSQL并遷移到MySQL數(shù)據(jù)庫腳本實例

熱門標簽:熱門電銷機器人 上海企業(yè)外呼系統(tǒng) 河南虛擬外呼系統(tǒng)公司 萬利達百貨商場地圖標注 惠州龍門400電話要怎么申請 電話機器人哪里有賣 外呼電信系統(tǒng) 智能機器人電銷神器 okcc外呼系統(tǒng)怎么調速度

Linux下沒有專門為MSSQL設計的訪問庫,不過介于MSSQL本是從sybase派生出來的,因此用來訪問Sybase的庫自然也能訪問MSSQL,F(xiàn)reeTDS就是這么一個實現(xiàn)。
Perl中通常使用DBI來訪問數(shù)據(jù)庫,因此在系統(tǒng)安裝了FreeTDS之后,可以使用DBI來通過FreeTDS來訪問MSSQL數(shù)據(jù)庫,例子:

復制代碼 代碼如下:

using DBI;
my $cs = "DRIVER={FreeTDS};SERVER=主機;PORT=1433;DATABASE=數(shù)據(jù)庫;UID=sa;PWD=密碼;TDS_VERSION=7.1;charset=gb2312";
my $dbh = DBI->connect("dbi:ODBC:$cs") or die $@;

因為本人不怎么用windows,為了研究QQ群數(shù)據(jù)庫,需要將數(shù)據(jù)從MSSQL中遷移到MySQL中,特地為了QQ群數(shù)據(jù)庫安裝了一個Windows Server 2008和SQL Server 2008r2,不過過幾天評估就到期了,研究過MySQL的Workbench有從MS SQL Server遷移數(shù)據(jù)的能力,不過對于QQ群這種巨大數(shù)據(jù)而且分表分庫的數(shù)據(jù)來說顯得太麻煩,因此寫了一個通用的perl腳本,用來將數(shù)據(jù)庫從MSSQL到MySQL遷移,結合bash,很方便的將這二十多個庫上百張表給轉移過去了,Perl代碼如下:
復制代碼 代碼如下:

#!/usr/bin/perl
use strict;
use warnings;
use DBI;


die "Usage: qq db\n" if @ARGV != 1;
my $db = $ARGV[0];

print "Connectin to databases $db...\n";
my $cs = "DRIVER={FreeTDS};SERVER=MSSQL的服務器;PORT=1433;DATABASE=$db;UID=sa;PWD=MSSQL密碼;TDS_VERSION=7.1;charset=gb2312";

sub db_connect
{
    my $src = DBI->connect("dbi:ODBC:$cs") or die $@;
    my $target = DBI->connect("dbi:mysql:host=MySQL服務器", "MySQL用戶名", "MySQL密碼") or die $@;
    return ($src, $target);
}
my ($src, $target) = db_connect;

print "Reading table schemas....\n";

my $q_tables = $src->prepare("SELECT name FROM sysobjects WHERE xtype = 'U' AND name != 'dtproperties';");#獲取所有表名
my $q_key_usage = $src->prepare("SELECT TABLE_NAME, COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE;");#獲取表的主鍵
$q_tables->execute;
my @tables = ();
my %keys = ();
push @tables, @_ while @_ = $q_tables->fetchrow_array;

$q_tables->finish;

$q_key_usage->execute();
$keys{$_[0]} = $_[1] while @_ = $q_key_usage->fetchrow_array;
$q_key_usage->finish;


#獲取表的索引信息
my $q_index = $src->prepare(qq(
    SELECT T.name, C.name
    FROM sys.index_columns I
    INNER JOIN sys.tables T ON T.object_id = I.object_id
    INNER JOIN sys.columns C ON C.column_id = I.column_id AND I.object_id = C.object_id;
));
$q_index->execute;
my %table_indices = ();
while(my @row = $q_index->fetchrow_array)
{
    my ($table, $column) = @row;
    my $columns = $table_indices{$table};
    $columns = $table_indices{$table} = [] if not $columns;
    push @$columns, $column;
}
$q_index->finish;

#在目標MySQL上創(chuàng)建對應的數(shù)據(jù)庫
$target->do("DROP DATABASE IF EXISTS `$db`;") or die "Cannot drop old database $db\n";
$target->do("CREATE DATABASE `$db` DEFAULT CHARSET = utf8 COLLATE utf8_general_ci;") or die "Cannot create database $db\n";
$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;\n\n";
        $target->do($ddl) or die "Cannot create table $table\n";
        #創(chuàng)建索引
        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";
            }
        }
        #轉移數(shù)據(jù)
        my @placeholders = map {'?'} @fields;
        my $insert_sql = "INSERT DELAYED INTO $table VALUES(" .(join ', ', @placeholders) . ");\n";
        my $insert = $target->prepare($insert_sql);
        my $select = $src->prepare("SELECT * FROM $table;");
        $select->execute;
        $select->{'LongReadLen'} = 1000;
        $select->{'LongTruncOk'} = 1;
        $target->do("SET AUTOCOMMIT = 0;");
        $target->do("START TRANSACTION;");
        my $rows = 0;
        while(my @row = $select->fetchrow_array)
        {
            $insert->execute(@row);
            $rows++;
        }
        $target->do("COMMIT;");
        #結束,輸出任務信息
        my $elapsed = time - $start;
        print "Child process $$ for table $db.$table done, $rows records, $elapsed seconds.\n";
        exit(0);
    }
}
print "Waiting for child processes\n";
#等待所有子進程結束
while (wait() != -1) {}
my $total_elapsed = time - $total_start;
print "All tasks from $db finished, $total_elapsed seconds.\n";

這個腳本會根據(jù)每一個表fork出一個子進程和相應的數(shù)據(jù)庫連接,因此做這種遷移之前得確保目標MySQL數(shù)據(jù)庫配置的最大連接數(shù)能承受。
然后在bash下執(zhí)行

復制代碼 代碼如下:

for x in {1..11};do ./qq.pl QunInfo$x; done
for x in {1..11};do ./qq.pl GroupData$x; done

就不用管了,腳本會根據(jù)MSSQL這邊表結構來在MySQL那邊創(chuàng)建一樣的結構并配置索引。

您可能感興趣的文章:
  • MySQL 數(shù)據(jù)庫跨操作系統(tǒng)的最快遷移方法
  • mysql 備份與遷移 數(shù)據(jù)同步方法
  • mysql中用于數(shù)據(jù)遷移存儲過程分享
  • 關于MySQL數(shù)據(jù)遷移--data目錄直接替換注意事項的詳解
  • MySQL下海量數(shù)據(jù)的遷移步驟分享
  • MySQL數(shù)據(jù)庫遷移data文件夾位置詳細步驟
  • 使用perl實現(xiàn)拆分數(shù)據(jù)表(mysql)并遷移數(shù)據(jù)實例
  • 簡述MySQL分片中快速數(shù)據(jù)遷移

標簽:淮安 綏化 百色 合肥 周口 周口 綿陽 秦皇島

巨人網(wǎng)絡通訊聲明:本文標題《Perl訪問MSSQL并遷移到MySQL數(shù)據(jù)庫腳本實例》,本文關鍵詞  Perl,訪問,MSSQL,并,遷,移到,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Perl訪問MSSQL并遷移到MySQL數(shù)據(jù)庫腳本實例》相關的同類信息!
  • 本頁收集關于Perl訪問MSSQL并遷移到MySQL數(shù)據(jù)庫腳本實例的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久久水蜜桃av免费网站| 欧美日韩午夜激情| 色尼玛亚洲综合影院| caoporn国产精品免费视频| 久久亚洲精品人成综合网| 日韩综合中文字幕| a级一a一级在线观看| 久久人91精品久久久久久不卡| 欧美精品在线看| 亚洲高清国产拍精品26u| 成人污网站在线观看| 欧美另类自拍| 91高清视频免费看| 狠狠综合久久av一区二区蜜桃| 在线免费观看成人| 国产亚洲精品久久777777| 亚洲一区二区黄色| 制服丝袜亚洲播放| 丰满人妻一区二区三区免费视频| 高清欧美一区二区三区| 波多野结衣高清在线| 熟妇人妻系列aⅴ无码专区友真希| 久久久不卡影院| 亚洲精品一区二区18漫画| www.久久热| 奇米视频7777| 国产日韩一区二区三区| 国产人成免费视频| 国产亚洲精品久久久久久| 日本三级亚洲精品| 国产精品成人免费精品自在线观看| 国产91久久婷婷一区二区| 女仆av观看一区| 国产精品国产自产拍高清av| 国产免费电影网站入口| 黑鬼大战白妞高潮喷白浆| 日韩网站中文字幕| 国产精品456露脸| 欧美日韩国产综合新一区| 久久精品凹凸全集| 蜜臀av一级做a爰片久久| 国产福利一区在线| 四虎影视一区二区| 亚洲高清色图| 欧美日韩国产精品自在自线| 国产精品乱战久久久| 激情欧美一区二区三区中文字幕| 青青视频在线免费观看| 亚洲美女一区| 日本成人黄色片| 美女胸又www又黄的网站| 99人久久精品视频最新地址| 午夜亚洲性色福利视频| 无码熟妇人妻av在线电影| eeuss影院在线观看第一页| 亚洲国产97在线精品一区| 欧美性猛交99久久久久99按摩| 91福利在线观看视频| 欧美大片91| 午夜伦理一区二区| 中国一级特黄毛片| 国产精品国产| 日韩精品麻豆| 91成人在线看| 午夜性色福利视频| av片在线免费| 欧美一区二区三区日韩| 国产成人h网站| 中文字幕欧美人与畜| 色中色综合网| 亚洲精品一区二三区不卡| 91精品一区二区三区蜜桃| 国产又大又硬又粗| 国产成人av网站| 国产91在线亚洲| 国产精品一区二区av交换| 亚洲日本精品一区| 91麻豆免费看| 2021天堂中文幕一二区在线观| 久久久久久久久国产精品| 久久免费99精品久久久久久| 涩涩视频在线观看下载| 夜夜揉揉日日人人青青一国产精品| 久久www人成免费看片中文| 国产精品一区二区免费| 欧美日韩亚洲综合一区| 亚洲一区二区三区四区五区黄| 韩国专线一区二三区| 国产精品尤物| 美女av一区二区三区| 影音日韩av| 日韩亚洲欧美在线观看| 久久亚洲国产成人精品性色| 欧美黄色一级大片| 中文字幕丰满乱子伦无码专区| 成人网18免费软件大全| 五月激情六月婷婷| 欧美日韩视频在线观看一区二区三区| 欧美亚洲免费电影| 亚洲免费伊人电影在线观看av| 日韩成人综合网站| 好看的视频你懂的| 国产美女精品在线观看| 性xx色xx综合久久久xx| 久久久成人精品一区二区三区| 午夜在线一区| av天堂一区二区| 9l视频自拍蝌蚪9l视频| 久久久久97| 日韩美女国产精品| 亚洲午夜伦理| 成人免费视频77777| 欧美丰满少妇xxxxx做受| 一二区在线观看| 欧美日韩中文国产| 色av男人的天堂免费在线| 久久精品免费在线观看| 欧美先锋影音| 日韩av网址在线观看| 欧美日韩卡一| 国产精品网站在线观看| 欧美xxxhd| 午夜精产品一区二区在线观看的| 日本不卡一区二区| 日韩在线第三页| 中文字幕一区二区三区乱码| 136国产福利精品导航网址应用| 成人福利网站| 羞羞的视频免费| 91在线高清视频| 5g影院天天爽成人免费下载| 性欧美18—19sex性高清| 亚洲国产高清国产精品| 欧美 日韩 人妻 高清 中文| 亚洲免费在线播放视频| 人人干人人爱人人爱| 久久蜜臀中文字幕| 久久久精品一区二区三区| 北条麻妃在线一区二区免费播放| 欧美激情精品久久久久久蜜臀| 国产成人精品免费一区二区| 色999久久久精品人人澡69| 日韩一级片在线观看| 亚洲成人av综合| 中文字幕人妻精品一区| av大全在线免费看| 日本一区二区在线不卡| 最近2018年在线中文字幕高清| 黄色网址电影| 国产精品视频一区二区三区四蜜臂| 久久精品理论片| 97在线资源| 国语对白精品一区二区| a视频免费在线观看| 欧美成人伊人久久综合网| 在线观看免费观看在线91| 久久婷婷五月综合| 亚洲综合图片区| 日韩成人a**站| 日本男人天堂网| 中文字幕一区二区免费| 成人1区2区3区| 成人免费淫片aa视频免费| 日本高清在线观看wwwww色| 久久99久久久| 亚洲美女视频在线免费观看| 亚洲欧美国产毛片在线| 国产激情一区二区三区桃花岛亚洲| 女同互添互慰av毛片观看| 天天看天天色| 欧美老头gaygay1069| 免费a级片在线观看| 69精品丰满人妻无码视频a片| 国产精品h视频| 精品无码久久久久久久久| 成人免费高清观看| 日韩在线视频在线| 搡老岳熟女国产熟妇| 免费观看亚洲视频| 久久99精品久久久久久野外| www.亚洲免费| 久久综合网hezyo| 国产在线导航| 日韩夫妻性生活xx| 亚洲在线观看| 91l九色lporny| 艳妇乳肉亭妇荡乳av| 久久久国产精品人人片| 波多野结衣影片| 91视频入口| 欧美一级片网址| 国产精品毛片一区视频| 欧美zozo另类异族| 亚洲美女福利视频| 亚洲美女视频| 999精品免费视频| 国产精品一级二级| 欧美特级一级片| 蜜臀av性久久久久蜜臀aⅴ四虎| 电影天堂久久| 中文字幕一区二区三区欧美日韩| 五月精品视频| 一区二区三区四区蜜桃| 国产精品青草久久久久福利99| 一本色道久久| 日韩一区二区三免费高清在线观看| 国产精品美女毛片真酒店| 中文字幕+乱码+中文字幕一区| 青春草视频在线观看| 97人人澡人人爽人人模亚洲| 亚洲国产成人精品一区二区三区| 日本一区二区视频在线| 偷拍自拍在线视频| 亚洲妇熟xx妇色黄蜜桃| 欧美妇乱xxxxx视频| 免费亚洲精品视频| 久久久国产精华液999999| 国产1区在线| 久久亚洲av午夜福利精品一区| 日本一区二区不卡| 欧美人善zozσ性伦交| 风间由美一区二区三区在线观看| 日韩一区二区三区国产| 国产色片在线观看| 久久久婷婷一区二区三区不卡| 五月激情丁香婷婷| 欧美精品网站| 嫩草av久久伊人妇女超级a| 韩国av中文字幕| 欧美视频中文一区二区三区在线观看| 日韩欧美国产网站| 欧美一级bbbbb性bbbb喷潮片| 91在线品视觉盛宴免费| 国产视频精品视频| 性欧美1819| 加勒比日本影视| 毛片网站在线免费观看| 欧美激情一级精品国产| 在线观看亚洲视频| 国内精品美女在线观看| 国产不卡视频一区二区三区| 丰满少妇久久久久久久| 看黄网站在线| 亚洲欧美亚洲| 国产91大片| 日本伊人色综合网| 日韩av影视大全| 一区二区三区亚洲变态调教大结局| 国产蜜臀97一区二区三区| 蜜臀aⅴ国产精品久久久国产老师| 欧美人体视频xxxxx| 国产乱子轮精品视频| 亚洲美女网站18| 欧美又粗又大又长| 一区二区三区中文字幕精品精品| 97**国产露脸精品国产| 中文字幕制服丝袜一区二区三区| 欧美激情一级二级三级在线视频| 国产无码精品在线播放| av观看免费在线| 色综合男人天堂| 在线国产精品视频| 精品视频在线观看一区二区| 中文国产成人精品久久一| 欧美成人精品激情在线观看| 视频三区在线观看| 2020久久国产精品| 欧美成人黄色网址| 国产精品色噜噜| 国模视频一区二区| 欧美成年人视频网站| 国产高清视频免费观看| 欧美熟妇乱码在线一区| 亚洲精品一级片| 国产a视频免费观看| 一区在线中文字幕| 91国内精品久久久| 欧美激情综合色综合啪啪五月| 欧美激情综合色综合啪啪五月| 91在线云播放| 在线播放 亚洲| 找av导航入口| 成人国产精品一区二区网站| 国产精品久久久久久妇女6080| 116极品美女午夜一级| **日韩最新| 日韩免费观看视频| 亚洲丝袜精品丝袜在线| 欧美日韩一区二区三区四区不卡| 亚洲精品欧美在线| 老女人av在线| 国产69精品久久久久毛片| 伊人久久久大香线蕉综合直播| 黄色片在线免费| 国产一区二区三区四区大秀| 男人的天堂av高清在线| 亚洲最大的免费视频网站| 亚洲一区二区免费| 国产秀色在线www免费观看| 裸体素人女欧美日韩| 最新69国产成人精品视频免费| 免费成人黄色| 欧美日本国产视频| 亚洲一区二区三区在线播放| 久久综合狠狠综合| 国产精品白浆| 国内揄拍国内精品少妇国语| 国产又猛又黄又爽| 免费在线小视频| 久久国产免费看| 精品福利在线| 国产欧美日韩亚洲一区二区三区| 欧美激情精品久久久久久| 草草久久久无码国产专区| 天堂аⅴ在线地址8| 九九九精品视频| eeuss影院18www免费| 97人摸人人澡人人人超一碰| 视频一区中文字幕国产| www.91香蕉视频| 国产精品久久久久av| 国产欧美日韩视频在线观看| 久久久久久久欧美精品| 亚洲欧美日韩三级| 亚洲xx在线| 给我看免费高清在线观看| freexxxx性特大另类| 色男人天堂综合再现|