我發現雖然migrating my SQLite database to mysql翻譯的Perl到Python
這個Perl腳本我想知道(因爲我不知道的Perl)何以在Python改寫呢?
最短(代碼)答案:)
編輯加分點:對不起,我的意思是最短的代碼,而不是嚴格簡短的回答
#! /usr/bin/perl
while ($line = <>){
if (($line !~ /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){
if ($line =~ /CREATE TABLE \"([a-z_]*)\"(.*)/){
$name = $1;
$sub = $2;
$sub =~ s/\"//g; #"
$line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n";
}
elsif ($line =~ /INSERT INTO \"([a-z_]*)\"(.*)/){
$line = "INSERT INTO $1$2\n";
$line =~ s/\"/\\\"/g; #"
$line =~ s/\"/\'/g; #"
}else{
$line =~ s/\'\'/\\\'/g; #'
}
$line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g; #'
$line =~ s/THIS_IS_TRUE/1/g;
$line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g; #'
$line =~ s/THIS_IS_FALSE/0/g;
$line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
print $line;
}
}
一些額外的代碼是必要的成功遷移源碼數據庫(處理一行)創建表語句,外鍵,修復原始程序中將空字段''
轉換爲\'
的錯誤
我posted the code on the migrating my SQLite database to mysql Question
這難以閱讀嗎?這可能是有史以來最可讀的perl程序。 – 2009-07-01 03:09:44
說了很多關於perl;) – Jiaaro 2009-07-01 03:21:49
@John Kugelman我認爲如果沒有`$ line`變量,它會更具可讀性。 – 2009-07-01 03:22:09