我试图使用带有链接服务器的OPENQUERY从server导入数据到mysql。
我已经导入了两个表,但是对于一个有一个长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的类型为servr中的varchar(8000),MySQL中的varchar(8000)。
有什么问题吗?为什么要给我这个错误?我没有尝试过先对varchar(8000)进行case Notes,但这不起作用。
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由于符号不匹配或溢出以外的原因,无法转换数据值。
发布于 2013-08-06 02:50:48
我能够通过将MySQL中的列类型从varchar(8000)改为Text来解决这个问题。我使用的是MySQL 5.6.12。当将Server转换为MySQL服务器时,可能会出现列类型问题。
谢谢
https://stackoverflow.com/questions/18069644
复制相似问题