2013-01-21 19 views
9

için döküm (METİN olarak verileri) Nasıl bir veri tabanı BLOB veri türü ile ayıklamak istediğiniz bir sqlite veritabanı var. Bu çalışıyorum: Bu açıkça çalışmıyorSqlite: BLOB

SELECT cast(data as TEXT) FROM content

.

x��Uak�0�>�8�0Ff;I�.��.i׮%�A��s�M

içerik sütundaki verilerin çoğunlukla metin değil, aynı zamanda (I METİN olarak dökme halinde sorunlara neden olabilir tanınan) resimlere sahip olabilir: çıktı böyle metni bozuk. Ben sadece bu verileri kullanılabilir bir formatta çıkarmak istiyorum. Herhangi bir fikir?

cevap

0

Tüm blobları veritabanınızdan dosyalara kaydedecek basit bir komut dosyası yazabilirsiniz. Daha sonra, bu dosyalara bir göz atabilir ve onlarla ne yapacağınıza karar verebilirsiniz. Örneğin, bu Perl betiği, geçerli dizinde, veri blob alanlarınızı içeren çok sayıda dosya oluşturacaktır. Örneğin; Basitçe getirilen satırları sınırlamak için SELECT deyimi ayarlamak istediğiniz kadar:

use DBI; 

my $dbh = DBI->connect("dbi:SQLite:mysqlite.db") 
    or die DBI::errstr(); 
my $sth = $dbh->prepare(qq{ 
    SELECT id, data FROM content 
}); 
$sth->execute(); 
while (my $row = $sth->fetchrow_hashref()) { 
    # Create file with name of $row->{id}: 
    open FILE, ">", "$row->{id}"; 
    # Save blob data into this file: 
    print FILE $row->{data}; 
    close FILE; 
} 
$dbh->disconnect(); 
20

Sen

SELECT hex(data) FROM content 

veya

SELECT quote(data) FROM content 

bir onaltılık dize (ABCD) dönecektir ilk, ikinci kullanabilirsiniz bir SQL literal olarak (X'ABCD') alıntı.

Burada (şu anda) onaltılı sütun bilgilerini SQLite'de bir BLOB'a dönüştürmenin bir yolu olmadığını unutmayın. Bunları dönüştürmek ve içe aktarmak için C/Perl/Python /… bağlamaları kullanmanız gerekecektir.

+0

Teşekkürler Scruss, güvenlik testlerimde yardımcı oluyor :) –