5

ローカルマシンにPDFファイルがあります。このファイルをSQLデータベースのBINARYBLOBにアップロードしたいと思います。ここで言及されている他のアプローチ[ MySQLのバイナリデータはすべてPHPを使用しています。LinuxコマンドラインでこのPDFファイルをアップロードする簡単でクリーンな方法が必要です。残念ながら、私はリモートファイルシステムにアクセスできないため、他の場所で説明されているようにファイルへのリンクを保存することはできません...このMySQLデータベースをこれらのPDFファイルの仮想ファイルシステムとして使用する必要があります。

PHPの例から、必要なのはINSERTコマンドを使用する前にスラッシュをエスケープすることだけのようです。Linuxコマンドラインでそれを実現する簡単な方法はありますか?

4

4 に答える 4

4

これを行うには、mysql 関数LOAD_FILEを小さなシェルスクリプトと組み合わせて使用​​できます。

テストされていないコードは次のとおりです。

#!/bin/bash

if [ -z $1 ]
then 
    echo "usage: insert.sh <filename>"
else
    SQL="INSERT INTO file_table (blob_column, filename) VALUES(LOAD_FILE('$1'), '$1')"

    echo "$SQL" > /tmp/insert.sql
   cat /tmp/insert.sql | mysql -u user -p -h localhost db
fi

そして、次のように使用できます。

<prompt>./insert.sh /full/path/to/file

エラー チェック、適切な一時ファイルの作成、エスケープ、およびその他の機能を備えたより良い実装は、読者の課題として残されています。LOAD_FILE()を使用するには、MySQL の FILE 権限とファイルのフル パスが必要であることに注意してください。

于 2009-07-08T16:20:35.160 に答える
1

curlブラウザーを使用して、GUIブラウザーと同じPOSTを送信できます。GUIブラウザーが送信するリクエストをスニッフィングし、curlを使用して複製します。

于 2009-07-08T15:16:01.637 に答える
0

これで問題が完全に解決するかどうかはわかりませんが、MySQL の上に実装されたファイルシステム レイヤーを見つけました。私はそれを使用して PDF ファイルを BLOB として自動的に保存できると思います... < inode,seq よりも意味のあるものに基づいて PDF ファイルへの構造化アクセスのために、このファイルシステムに PDF ファイルへのキーを保存する方法を理解する必要があります>。

http://sourceforge.net/projects/mysqlfs/および
http://www.linux.com/archive/feature/127055

于 2009-07-08T22:35:18.553 に答える
0

サンプルスクリプトも含まれているMySQLクックブックのこの記事を参照してください。

http://www.freeopenbook.com/mysqlcookbook/mysqlckbk-CHP-17-SECT-7.html

ただし、いくつかの制限があります。特に、ファイルは mysql サーバーと同じホストに保存する必要があります。

于 2011-07-01T14:02:16.413 に答える