19

データ型 BLOB の情報の列を抽出したい sqlite データベースがあります。私はこれを試しています:

SELECT cast(data as TEXT) FROM content

これは明らかに機能していません。出力は、次のような文字化けしたテキストです。

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

コンテンツ列のデータはほとんどがテキストですが、画像が含まれている場合もあります (TEXT としてキャストすると問題が発生する可能性があることがわかりました)。そのデータを使用可能な形式に抽出したいだけです。何か案は?

4

2 に答える 2

2

データベースからすべてのブロブをファイルに保存する簡単なスクリプトを作成できます。後で、これらのファイルを見て、それらをどうするかを決めることができます。

たとえば、この Perl スクリプトは、データ BLOB フィールドを含む多数のファイルを現在のディレクトリに作成します。SELECT ステートメントを調整して、必要に応じてフェッチされる行を制限するだけです。

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();
于 2013-01-21T09:05:44.473 に答える