将 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 界面)

将多用户环境中的表中的 ms 访问数据附加到 sql server 表中

如何在 ms 访问中显示来自 sql server 的图像

从 Access 数据库到 SQL Server 的图像

将数据从 MS SQL 移动到 MySQL

将数据从 MS Access 传输到 SQL Server