Я пытаюсь импортировать данные из SQL Server в MySQL, используя OPENQUERY со связанным сервером.
Я импортировал пару таблиц, но у меня проблема с таблицей с длинным полем varchar.
Каждый раз, когда я запускаю этот запрос, я получаю следующее
Msg 7344, Level 16, State 1, Line 2
The OLE DB provider "MSDASQL" for linked server "Serv1" could not INSERT INTO table "[MSDASQL]" because of column "Notes". Could not convert the data value due to reasons other than sign mismatch or overflow.
Столбец Notes имеет тип varchar (8000) в SQL servr, а также varchar (8000) в MySQL.
В чем проблема? почему это дает мне эту ошибку? не я пытался сначала записать Notes в varchar (8000), но это не сработало.
INSERT OPENQUERY (Serv1, 'SELECT
id,
i3_identity,
mid,
Notes,
Comments,
result_code,
Disposition,
completed_on,
calltype
FROM finaltesting.activities')
SELECT
CAST(ID AS int) AS id,
CAST(identity AS int) AS identity,
CAST(merchantAccount AS varchar(255)) AS mid,
Notes,
CAST(Comments AS varchar(8000)) AS Comments,
CAST(FinishCode AS varchar(255)) AS result_code,
CAST(Disposition AS varchar(255)) AS Disposition,
CAST(callDate AS datetime) AS completed_on,
CAST(CallType AS varchar(255)) AS calltype
FROM activities
Не удалось преобразовать значение данных по причинам, отличным от несоответствия знаков или переполнения.
1 ответ
Мне удалось решить эту проблему, изменив тип столбца в MySQL с varchar (8000) на Text. Я использую MySQL 5.6.12. Вероятно, это проблема с типом столбца при преобразовании из SQL Server в MySQL Server.
Благодарность
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными.
Creeate table
от этогоselect
?