将 MS SQL Server 图像数据移动到 MySQL longblob
Posted
技术标签:
【中文标题】将 MS SQL Server 图像数据移动到 MySQL longblob【英文标题】:Moving MS SQL Server image data to MySQL longblob 【发布时间】:2021-01-08 23:48:00 【问题描述】:我想知道将 SQL Server 数据库中的图像数据移动到 mysql 服务器数据库的最佳途径是什么?是否可以通过 SQL 实现?
到目前为止,我已经在 MS SQL Server 上创建了一个链接到 MySQL 表的链接服务器。当我在本地时,我可以在 MySQL 服务器上上传 blob(使用 LOAD_FILE 函数......但试图远离它,因为图像需要在 MySQL 主机上才能使该函数工作)。是否有另一种方法可以在不使用 LOAD_FILE 的情况下将 blob 插入 MySQL?
我在想应该有一种方法可以将 MS SQL Server 图像字段分解为二进制,然后通过链接服务器将其插入 MySQL 数据库?
【问题讨论】:
longblob on MySQL 大致相当于 SQL Server 的 varbinary(max) 所以你有没有尝试过类似select cast(imagecolumn as varbinary(max))
的东西?
是的,我发现 SQL Server 似乎隐式地将图像转换为 varbinary(max)....我能够使用 OPENQUERY 方法使其工作。 INSERT INTO OPENQUERY(MYSQLLINKEDSRV, 'select name, file from mysqlTable') SELECT TOP 10 name, file from mssqlTable;
【参考方案1】:
是的,我发现 SQL Server 似乎将图像隐式转换为 varbinary(max)....我能够使用 OPENQUERY 方法使其工作。
INSERT INTO OPENQUERY(MYSQLLINKEDSRV, 'select name, file from mysqlTable') SELECT TOP 10 名称,来自 mssqlTable 的文件;
这似乎也对我有用...... INSERT INTO MYSQL...mysqlTable(name, file) VALUES ('name','xxxxx')
我确实注意到,当我通过链接服务器插入 MySQL 时,插入记录的第一列为空......为了解决这个问题,我将整数列移动到插入语句的末尾,它似乎可以工作好吧,如果没有整数列,我仍在研究如何处理这个问题……如果我不需要的话,我真的不想在我的 mysql 表中有一个虚拟列……
【讨论】:
以上是关于将 MS SQL Server 图像数据移动到 MySQL longblob的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 中存储图片(MS Access 界面)