亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

MySQL到SQLite的數據轉換

2024-09-07 00:09:55
字體:
來源:轉載
供稿:網友

下面是Perl的程序代碼:

#!/usr/bin/perl -w
use strict;

use DBI;
use Getopt::Std;

use vars qw(%opts);
getopts('u:s:d:h',/%opts);
my ($user,$host,$db,$help) = parse_args(/%opts);

USAGE() and exit unless $user and $host and $db and not $help;

my $table = join(' ',@ARGV);
open(DUMP, "mysqldump -u $user -p -h $host $db $table |");
my $sql = do {local $/; };

$sql =~ s/^#.*$//mg; # chokes on comments
$sql =~ s/auto_increment//g; # on 'auto_increment'
$sql =~ s/TYPE=/w ;/;/g; # and on 'TYPE=____'
$sql =~ s///'/''/g; # and on escaped '

my @table = $sql =~ /CREATE/s TABLE/s (/w )/g;
print "creating tables: ",join(' ',@table),"/n";

my $dbh = DBI->connect(
("DBI:SQLite:dbname=$db.dbm"),
{RaiseError=>1}
);

$dbh->do($sql);

sub parse_args {
my %opt = %{ shift};
return @opt{qw(u s d h)};
}

sub USAGE {print "USAGE: $0 -u user -s server(host) -d database/n"}

=pod

=head1 NAME

mysql2sqlite.pl - MySQL database migration script

=head1 DESCRIPTION

This is a simple Perl DBI script for use with the MySQL
and SQLite database drivers. The script opens a pipe to
the mysqldump program to retrieve CREATE and INSERT
statements for the specified tables. This data is then
munged to conform with SQLite, and then fed to a dbm
file named the same as the database.

=head1 SYNOPSIS

./mysql2sqlite.pl -u user -s host -d dbase table1 table2 table3

This will create a dbm named 'dbase.dbm' with three tables
(table1, table2, table3) provided that they all exist in
the MySQL database. If tables are not supplied, then ALL
TABLES in the database will be migrated. If a table already
exists in the dbm file, then the script will stop execution
before that table's data is migrated (simplicity vs.
robustness, i chose simplicity).

=head1 LEGAL STUFF

Mi casa su casa, but if you get hurt or someone gets hurt
from this casa, then it's your casa, not mine.

=cut
 
對于如何處理Mysql中的ENUM/SET類型,則可以參考下面的代碼:
sub JeffasMysql2SQLite {
my @Ssql = split //n/,shift(@_);
my %index;
my @tablename;

for my $sql( @Ssql ){
push @tablename, $1 if $sql =~ m/create /s table /s (/w ) /i
x;

$sql =~ s/^#.*$//mg; # chokes on comments
$sql =~ s{^/s*?(KEY(?:/s*/w /s*)?/(.*)}{
push @{$index{$tablename[-1]}},$1;
"";
}giemx;
$sql =~ s/auto_increment//ig; # on 'auto_increment'
$sql =~ s/UNSIGNED//ig;
$sql =~ s/TYPE=/w ;/;/gi; # and on 'TYPE=____'
$sql =~ s///'/''/g; # and on escaped '

$sql =~ s{^/s*?(/w )/s (?:SET|ENUM)/((.*)$}{ SetOrEnumToVarcha
r($1,$2); }exig;
}

my $ret = join "/n",@Ssql;

for my $tablename( @tablename ){

for my $ix( @{ $index{$tablename} } ){
$ix=~ s/[,/s] $//;

if( $ix =~ //bKEY/((/w )/)/i ) {
$ret.=" CREATE INDEX $1 on $tablename ($1);/n";
} elsif( $ix =~ //bKEY/s (/w )/s /((.*?)/z/i ) {
$ret.=" CREATE INDEX $1 on $tablename ($2;/n";
}
}
}

return $ret;
}

sub SetOrEnumToVarchar {
my( $name, $val ) = @_;
my $end = substr $val, rindex($val,')') 1;
$val = substr $val, 0, rindex($val,')') - 1;
my $q = substr $val, 0, 1, "";
( $val ) = sort {
$b <=> $a
} map {
s/^/"//;
s//"/$//;
length

下面是Perl的程序代碼:

#!/usr/bin/perl -w
use strict;

use DBI;
use Getopt::Std;

use vars qw(%opts);
getopts('u:s:d:h',/%opts);
my ($user,$host,$db,$help) = parse_args(/%opts);

USAGE() and exit unless $user and $host and $db and not $help;

my $table = join(' ',@ARGV);
open(DUMP, "mysqldump -u $user -p -h $host $db $table |");
my $sql = do {local $/; };

$sql =~ s/^#.*$//mg; # chokes on comments
$sql =~ s/auto_increment//g; # on 'auto_increment'
$sql =~ s/TYPE=/w ;/;/g; # and on 'TYPE=____'
$sql =~ s///'/''/g; # and on escaped '

my @table = $sql =~ /CREATE/s TABLE/s (/w )/g;
print "creating tables: ",join(' ',@table),"/n";

my $dbh = DBI->connect(
("DBI:SQLite:dbname=$db.dbm"),
{RaiseError=>1}
);

$dbh->do($sql);

sub parse_args {
my %opt = %{ shift};
return @opt{qw(u s d h)};
}

sub USAGE {print "USAGE: $0 -u user -s server(host) -d database/n"}

=pod

=head1 NAME

mysql2sqlite.pl - MySQL database migration script

=head1 DESCRIPTION

This is a simple Perl DBI script for use with the MySQL
and SQLite database drivers. The script opens a pipe to
the mysqldump program to retrieve CREATE and INSERT
statements for the specified tables. This data is then
munged to conform with SQLite, and then fed to a dbm
file named the same as the database.

=head1 SYNOPSIS

./mysql2sqlite.pl -u user -s host -d dbase table1 table2 table3

This will create a dbm named 'dbase.dbm' with three tables
(table1, table2, table3) provided that they all exist in
the MySQL database. If tables are not supplied, then ALL
TABLES in the database will be migrated. If a table already
exists in the dbm file, then the script will stop execution
before that table's data is migrated (simplicity vs.
robustness, i chose simplicity).

=head1 LEGAL STUFF

Mi casa su casa, but if you get hurt or someone gets hurt
from this casa, then it's your casa, not mine.

=cut
 
對于如何處理Mysql中的ENUM/SET類型,則可以參考下面的代碼:
___FCKpd___3
;
} split /$q,$q/, $val;

#warn "/n/t/tname $name/n/t/t val $val/n/t/t end $end/n/t/t q $q/n/t
/t";
return "$name VARCHAR($val) $end";
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩免费在线观看视频| 欧美视频免费在线观看| 欧美中文字幕视频| 久久黄色av网站| 欧美视频一区二区三区…| 久久午夜a级毛片| 久久九九精品99国产精品| 精品久久久久久久大神国产| 久久视频国产精品免费视频在线| 欧美午夜激情视频| 欧美精品激情在线观看| 精品久久久国产| 日本中文字幕久久看| 国产精品久久av| 久久久久日韩精品久久久男男| 久久99国产综合精品女同| 裸体女人亚洲精品一区| 精品国产一区二区在线| 亚洲人成77777在线观看网| 久久久久亚洲精品| 日韩免费在线视频| 欧美肥老妇视频| 欧美在线观看一区二区三区| 97av在线视频免费播放| 亚洲精选中文字幕| 97国产精品视频人人做人人爱| 中文国产成人精品| 精品久久久久久久久久久久| 黄色一区二区三区| 久久免费在线观看| 中日韩美女免费视频网址在线观看| 亚洲欧美制服另类日韩| 欧美另类极品videosbest最新版本| 成人免费视频xnxx.com| 大桥未久av一区二区三区| 成人精品一区二区三区电影免费| 久久精品国产久精国产思思| 国产精品久久久久久久久久久久久| 2019最新中文字幕| 国产精品影片在线观看| 激情亚洲一区二区三区四区| 国产91成人video| 一本色道久久88精品综合| 亚洲欧美日韩一区在线| 国产一区二区三区网站| 日韩av免费看网站| 国产精品稀缺呦系列在线| 国产精品亚洲一区二区三区| 日本高清+成人网在线观看| 4444欧美成人kkkk| 国产精品视频色| 国产精品777| 国产精品美女网站| 国产精品福利久久久| 欧美激情三级免费| 国产91精品高潮白浆喷水| 欧美性理论片在线观看片免费| 久久久精品国产亚洲| 国产日本欧美一区二区三区| 国产日韩av在线播放| 亚洲另类激情图| 亚洲欧美国产精品| 4444欧美成人kkkk| 亚洲人在线观看| 国产婷婷成人久久av免费高清| 亚洲国产精品99| 国产精品中文字幕久久久| 国产亚洲精品一区二555| 久久人人爽人人爽爽久久| 色狠狠av一区二区三区香蕉蜜桃| 欧美电影免费观看| 成人精品在线观看| 欧美性jizz18性欧美| 国产成人精品久久二区二区| 在线视频国产日韩| 国产成人福利视频| 国产精品日韩av| 国产精品美女午夜av| 91久久精品在线| 欧美在线免费观看| 亚洲欧美国产精品| 亚洲精品狠狠操| 亚洲色图狂野欧美| 亚洲美女av电影| 亚洲免费一级电影| 国产精品尤物福利片在线观看| 国产精品无码专区在线观看| 欧美有码在线视频| 国产一区二区三区网站| 久久久久国产精品www| 亚洲福利视频在线| 久久久久国产一区二区三区| 九九久久久久久久久激情| 国产精品久久久91| 日韩欧美成人区| 国产成人激情视频| 亚洲一区二区免费| 久久久久久久一区二区| 九九热精品视频| 欧美巨乳美女视频| 91亚洲午夜在线| 午夜精品久久久久久久99黑人| 国产深夜精品福利| 在线国产精品视频| 日韩在线观看视频免费| 91九色综合久久| 最新91在线视频| 久久天天躁狠狠躁夜夜躁| 久久视频国产精品免费视频在线| 国产亚洲精品va在线观看| 性欧美办公室18xxxxhd| 一区二区欧美在线| 国产日韩视频在线观看| 亚洲精品小视频在线观看| 97成人在线视频| 夜夜嗨av一区二区三区免费区| 国产精品美女999| 国产精品一区二区性色av| 国产一区私人高清影院| 国产乱人伦真实精品视频| 精品久久久久久| 欧洲一区二区视频| 韩国三级日本三级少妇99| 自拍偷拍亚洲在线| 97激碰免费视频| 在线播放日韩av| 亚洲欧美三级伦理| 久久久久久久久久婷婷| 91精品国产综合久久香蕉最新版| 国产日本欧美一区二区三区| 97国产在线视频| 国产在线高清精品| xvideos亚洲人网站| 97精品久久久中文字幕免费| 欧美一区二区三区艳史| 欧美日韩国产成人高清视频| xxxxx成人.com| 国产精品国产三级国产专播精品人| 欧美日韩国产一区中文午夜| 久久人人爽人人爽人人片av高清| 色综合色综合网色综合| 精品中文字幕在线2019| 欧美性猛交丰臀xxxxx网站| 91色琪琪电影亚洲精品久久| 国产视频在线一区二区| 亚洲自拍小视频免费观看| 成人av在线网址| 91欧美激情另类亚洲| 久久久久中文字幕2018| 久久久久久一区二区三区| 成人av在线亚洲| 中文字幕精品—区二区| 欧美激情一区二区三区高清视频| 国产精品露脸av在线| 一区二区三区亚洲| 成人国产在线视频| 色噜噜狠狠色综合网图区| 国产精品亚洲片夜色在线| 92裸体在线视频网站| 欧美精品videosex牲欧美| 这里精品视频免费| 久久免费视频这里只有精品| 91精品啪在线观看麻豆免费| 97在线免费观看视频|