#mysql #sql #sql-server #blob #varbinary
#mysql #sql #sql-сервер #большой двоичный объект #varbinary
Вопрос:
Мне интересно, каков наилучший маршрут для перемещения данных изображения из базы данных SQL Server в базу данных сервера MySQL? Возможно ли это с помощью SQL?
До сих пор я создал связанный сервер на сервере MS SQL, который ссылается на таблицу MySQL. Я могу загружать большие двоичные объекты на сервер MySQL, когда я нахожусь на нем локально (используя функцию LOAD_FILE …но стараюсь держаться подальше от этого, поскольку изображения должны быть на хосте MySQL, чтобы эта функция работала). Есть ли другой способ вставить большие двоичные объекты в MySQL без использования LOAD_FILE?
Я думаю, что должен быть способ разбить поле изображения MS SQL Server на двоичное, а затем вставить его в базу данных MySQL через связанный сервер?
Комментарии:
1. longblob в MySQL примерно эквивалентен переменной SQL Server (max), так что вы пробовали что-нибудь подобное
select cast(imagecolumn as varbinary(max))
?2. Да, я обнаружил, что 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.
{ВСТАВИТЬ В OPENQUERY(MYSQLLINK RV, ‘выберите имя, файл из mysqlTable’) ВЫБЕРИТЕ имя TOP 10, файл из mssqlTable; }
Это, похоже, сработало и для меня… {ВСТАВИТЬ В MYSQL … mysqlTable (имя, файл) ЗНАЧЕНИЯ (‘name’,’xxxxx’)}
Я заметил, что при вставке в MySQL через linkedserver первый столбец вставленной записи был null….to исправьте это Я переместил свои целочисленные столбцы в конец моей инструкции insert, и, похоже, это работает нормально, я все еще изучаю, как справиться с этим, если естьнет целых столбцов…на самом деле не хочу иметь фиктивный столбец в моей таблице mysql, если мне это не нужно…