SORU
20 AĞUSTOS 2008, ÇARŞAMBA


SQLite3, MySQL göç için kolay yolu?

Herkes MySQL, SQLite3 veritabanı göç için kolay bir yol biliyor musun?

CEVAP
17 EYLÜL 2008, ÇARŞAMBA


Herkes birkaç greps ile başlar ve ifadeler perl gibi görünüyor ve belirli bir veri kümesi için çalışır bir şey almak biraz sayılır ama eğer verileri doğru ithal olup olmadığını bilemezsin. Cidden hiç kimse bu ikisi arasında dönüştürmek için sağlam bir kütüphane inşa şaşırdım.

Burada SQL TÜM farklılıkları bir liste bu iki dosya formatı arasındaki bildiğim bir örnek: Satır: ile başlayan

  • HAREKET BAŞLAR
  • COMMİT
  • sqlite_sequence
  • BENZERSİZ BİR DİZİN OLUŞTURUN

olan MySQL kullanılır

  • SQLlite kullanır "" ve MySQL kullanır table_name . TABLO/EKLE OLUŞTURUN table_name TABLO/EKLE OLUŞTURUN
  • MySQL şema tanımı içinde tırnak kullanmaz
  • MySQL cümlecikleri İÇİNE YERLEŞTİRİN içine dizeleri tek tırnak kullanır
  • SQLlite ve MySQL cümlecikleri TAKIN içinde dizeleri kaçmak için farklı yöntemler var
  • SQLlite kullanır 't' ve 'f' için Boolean değerleri, MySQL kullanır 1 ve 0 (basit bir düzenli ifade için bu başarısız olduğunda bir dize gibi: "ben, don\'t' içine YERLEŞTİRİN)
  • Otomatik artış SQLLite, MySQL kullanır isteğe bağlı bir isim kullanır

Burada çalışan, çok temel paramparça olmuş bir perl scriptbenimdiğer perl betikleri ben web üzerinde bulunan bu durumlardan çok fazla veri kümesi ve denetler. Nu verileriniz için çalışmak ama değiştirmek ve göndermek için çekinmeyin buraya bu guarentees.

#! /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;
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005
  • magnum33563

    magnum33563

    8 NİSAN 2011