2009-07-08 118 views
5

我在本地机器上有一个PDF文件。我想将这个文件上传到SQL数据库的BINARY BLOB中。这里提到的其他方法[Binary Data in MySQL都使用PHP。我想要一个简单干净的方法来在Linux命令行上上传这个PDF文件。不幸的是,我没有访问远程文件系统,所以不能只存储链接到其他地方提到的文件...我有点需要使用这个MySQL数据库作为这些PDF文件的虚拟文件系统..在mysql中存储二进制数据

从PhP的例子,似乎所有需要的是在使用INSERT命令之前逃避斜杠?有一种简单的方法可以在Linux命令行上实现该目标吗?

回答

1

您可以使用curl浏览器来提交与GUI浏览器相同的POST。嗅探GUI浏览器发送的请求,然后用curl复制该请求。

+0

也许我在这篇文章中并不清楚......我没有使用任何GUI。我只想从命令行上传一个PDF文件到SQL数据库。 INSERT INTO table set pdfBlob = ,name ='stupid.pdf'; 我的问题是如何从'stupid.pdf'生成 badkya 2009-07-08 15:30:22

+1

对不起,我以为你正在使用基于PHP的客户端来上传文件。这会给你一个清晰的使用curl的命令行方法。 – 2009-07-08 16:10:43

4

你可以使用mysql函数LOAD_FILE与一个小的shell脚本来做到这一点,我猜。

未经测试的代码如下:

#!/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权限和文件的完整路径。

相关问题