Я пытаюсь импортировать данные из 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

Не удалось преобразовать значение данных по причинам, отличным от несоответствия знаков или переполнения.

0
Jaylen 6 Авг 2013 в 03:50
Может быть, это глупо, но пробовали ли вы Creeate table от этого select?
 – 
jaczes
6 Авг 2013 в 04:21
На стороне SQL Server или в MySQL?
 – 
Jaylen
6 Авг 2013 в 04:40

1 ответ

Лучший ответ

Мне удалось решить эту проблему, изменив тип столбца в MySQL с varchar (8000) на Text. Я использую MySQL 5.6.12. Вероятно, это проблема с типом столбца при преобразовании из SQL Server в MySQL Server.

Благодарность

0
Jaylen 6 Авг 2013 в 06:50