79

SQL Server 2005 テーブルにリンクする OLEDB ソースを使用している ssis パッケージがあります。日付列を除くすべての列は NVARCHAR(255) です。Excel の宛先を使用し、SQL ステートメントを使用して Excel ワークブックにシートを作成しています。SQL は Excel 接続マネージャー (事実上、シートを作成する create table ステートメント) にあり、列のマッピングから派生します。 DB。

何をしても、ソースと宛先の間でこのユニコード --> 非ユニコード変換エラーが発生し続けます。S > D の間で文字列 [DT_STR] への変換を試み、それを削除し、SQL テーブル VARCHAR を NVARCHAR に変更しても、このフリップピン エラーが発生します。

SQLステートメントを使用してExcelでシートを作成しているため、Excelシートで列のデータ型を実際に事前定義する方法がわかりません。デフォルトのメタデータになると思いますが、わかりません。

では、SQL テーブルの宛先と、この SSIS sql ステートメントを使用した Excel シートの作成との間に、このエラーが発生しないようにするにはどうすればよいでしょうか?

私のエラーは次のとおりです。

データ フロー タスク [OLE DB ソース [1]] でのエラー: 列 "MyColumn" は、Unicode と非 Unicode の文字列データ型の間で変換できません。

そして、すべての nvarchar 列に対して。

どんな助けにも感謝します

ありがとう

アンドリュー

4

12 に答える 12

88

以下の手順は私のために働いた:

  1. ソース タスクを右クリックします。

  2. 「高度なエディターを表示」をクリックします。

ssis のソース タスクの高度な編集オプション

  1. [入力と出力のプロパティ] タブに移動します。

  1. エラーが発生している出力列を選択します。

  2. そのデータ型は「String[DT_STR]」になります。

  3. そのデータ型を「Unicode String[DT_WSTR]」に変更します。

データ型を Unicode 文字列に変更する

  1. 保存して閉じます。

お役に立てれば!

于 2016-12-13T10:09:25.193 に答える
64

データ変換変換を追加して、文字列列を非 Unicode (DT_STR) から Unicode (DT_WSTR) 文字列に変換します。

すべての文字列列に対してこれを行う必要があります...

于 2014-03-25T11:49:19.360 に答える
17
  1. まず、データ フロー ダイアグラムにデータ変換ブロックを追加します。

  2. データ変換ブロックを開き、エラーが表示されている列にチェックを入れます。以下では、そのデータ型を Unicode 文字列 (DT_WSTR) または予想されるデータ型に変更して保存します。

  3. 宛先ブロックに移動します。その中のマッピングに移動し、新しく作成された要素を対応するアドレスにマップして保存します。

  4. ソリューション エクスプローラーでプロジェクトを右クリックします。プロパティを選択します。構成プロパティを選択し、その中でデバッグを選択します。ここで、Run64BitRunTime オプションを false に設定します (Excel は 64 ビット アプリケーションをうまく処理できないため)。

于 2015-06-11T05:41:36.377 に答える
9

以前に提案されたデータ変換を追加する代わりに、nvarchar 列を varchar 列にキャストできます。これにより、不要なステップが発生するのを防ぎ、代替手段よりも高いパフォーマンスが得られます。

SQL ステートメントの選択で、 に置き換えdateますCAST(date AS varchar([size]))。何らかの理由で、これはまだ出力データ型を変更しません。これを行うには、次の手順を実行します。

  1. OLE DB Sourceステップを右クリックし、詳細エディターを開きます。
  2. 入力と出力のプロパティに移動します
  3. 出力列の選択
  4. 列を選択してください
  5. [データ型のプロパティ] で、DataType を文字列 [DT_STR] に変更します。
  6. 長さをCASTステートメントで指定した長さに変更します

これを行うと、ソース データが varchar として出力され、エラーが消えます。

ソース

于 2017-11-08T13:38:47.687 に答える
3

私は同じ問題を抱えていて、ここに書かれているすべてを試しましたが、それでも同じエラーが発生しました。変換しようとしていた列の値が NULL であることが判明しました。

NULL 値を削除すると、問題が解決しました。

乾杯、 アーメド

于 2017-07-31T20:57:26.537 に答える
0

同じ問題が発生しました。SQLリクエストで解決します:convertを直接使用

CONVERT(NVARCHAR(50),'') AS MyVarName

空 (または固定サイズの文字列) を Excel ファイルに入れる必要があります。MyVarName の強制タイプを DT-STR から DT-WSTR (unicode) に変換する

于 2022-02-01T14:32:58.033 に答える