0

リンク サーバーで OPENQUERY を使用して、SQL 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 列は、SQL サーバーでは varchar(8000) 型で、MySQL では varchar(8000) 型です。

どうした?なぜこのエラーが発生するのですか? 最初に 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

符号の不一致またはオーバーフロー以外の理由により、データ値を変換できませんでした。

4

1 に答える 1

0

MySQL の列タイプを varchar(8000) から Text に変更することで、この問題を解決できました。MySQL 5.6.12 を使用しています。SQL Server から MySQL Server に変換するときの列タイプの問題である可能性があります。

ありがとう

于 2013-08-06T02:50:48.270 に答える