我在本地计算机上有一个PDF文件。我想将此文件上传到SQL数据库上的BINARY BLOB。这里提到的其他方法[Binary Data in MySQL都使用PHP。我想要一个简单干净的方法来在Linux命令行上传这个PDF文件。不幸的是,我无法访问远程文件系统,所以不能像其他地方那样只存储文件的链接......我需要将这个MySQL数据库用作这些PDF文件的虚拟文件系统..
从PhP示例中,似乎所有需要的是在使用INSERT命令之前转义斜杠?有没有一种简单的方法可以在Linux命令行上实现它?
答案 0 :(得分:4)
我猜你可以使用mysql函数LOAD_FILE和一个小shellcript来做这个。
未经测试的代码如下:
#!/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权限和文件的完整路径。
答案 1 :(得分:1)
您可以使用curl浏览器提交GUI浏览器执行的相同POST。嗅探GUI浏览器发送的请求,然后用curl复制它。
答案 2 :(得分:0)
不确定这是否完全解决了我的问题,但我发现在MySQL之上实现了一个文件系统层。我想我可以用它来自动将我的PDF文件存储为BLOB ...仍然需要弄清楚如何将密钥存储到这个文件系统中的PDF文件,以便基于比&lt;更有意义的东西对PDF文件进行结构化访问。 inode,seq&gt;。
http://sourceforge.net/projects/mysqlfs/和
http://www.linux.com/archive/feature/127055
答案 3 :(得分:0)
请参阅MySQL cookbook中的这篇文章,其中包括一个示例脚本:
http://www.freeopenbook.com/mysqlcookbook/mysqlckbk-CHP-17-SECT-7.html
但它有一些限制,最值得注意的是该文件必须与mysql服务器存储在同一主机上。