将图片插入sql表时出错
Posted
技术标签:
【中文标题】将图片插入sql表时出错【英文标题】:Error while inserting picture into sql table 【发布时间】:2013-11-15 13:39:11 【问题描述】:我正在尝试使用以下查询将“png”图像插入 sql 表字段(称为条形图,其类型为 blob)。
INSERT INTO disease_symptom_soc(barchart) Values ((SELECT BULKColumn FROM OPENROWSET(BULK N'/home/barchartC2936861.png', SINGLE_BLOB) AS Image)) where disease_id='C2936861';
我收到以下错误。可能是什么原因?
ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 mysql 服务器版本相对应的手册 在第 1 行的 '(BULK N'/home/barchart' 附近使用的语法
【问题讨论】:
【参考方案1】:我猜你可以使用 LOAD_FILE
例子:
INSERT INTO expBLOB(ID,IMAGE) VALUES(1,LOAD_FILE('/some/path/image.png'))
【讨论】:
嗨,我试过:INSERT INTO disease_symptom_soc(barchart) VALUES(LOAD_FILE('path/barchartC2936861.png')) WHERE disease_id='C2936861';但是我收到错误:错误 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“WHERE disease_id='C2936861”附近使用正确的语法【参考方案2】:如果可以,请将列的 DataType 更改为“image”。取决于您使用的 sql server 版本。否则,如果它是基于 oracle 的 db ,则必须创建一个 loadfile proc 并按如下方式执行它: http://arjudba.blogspot.com/2008/06/how-to-insert-blob-dataimage-video-into.html
【讨论】:
我担心您的链接不再有效【参考方案3】:MySql OpenrowSet 不用于将文件复制到数据库中,而是用于查询带有连接字符串的外部文件(csv、xls),例如
OPENROWSET ('MSDASQL','mysql connection string','query')
我建议您使用任何语言制作的简单程序加载文件(我不知道您是否使用 php、c#... 进行开发)并通过简单的插入将已加载到内存中的文件传递给数据库查询。
【讨论】:
那么这里的链接中,他们不是指要加载的图像吗? weblogs.sqlteam.com/peterl/archive/2007/09/26/… 据我所知,这种类型的 sintax 在旧版本的 sqlServer 上已经工作了一段时间:几年前我曾尝试使用这些,但给我带来的问题比简化更多:首先“ @" 参数化函数一次都没有工作让我发誓,因为我必须对每个文件名进行查询:这个 sintax 的另一个大缺陷是你必须为每台安装程序的 pc 拥有相同的目录这是一个很大的限制:我建议您花一点力气编写一些不受限制、更灵活和可调试的东西。以上是关于将图片插入sql表时出错的主要内容,如果未能解决你的问题,请参考以下文章