.xls を SQL にインポートする際に問題があります。Excel ファイルには、2000 を超えるテキスト文字を含むセルを含む列があるため、インポート時nvarchar
に各列を 4000 に変更しました。インポートは機能しましたが、1 つの列でセルが 255 文字に切り捨てられました。チェックしたところ、列は nvarchar (4000, null) ですが、SELECT MAX(LEN(column)) = 255 で、これは奇妙です。に変更しようとしnvarchar
ましvarchar(4000)
たが、これは受け入れられません。メッセージは次のとおりです。
【出典情報】 テーブル: `Sheet1$` コラム:q1 列のタイプ: VarChar SSIS タイプ: Unicode 文字列 [DT_WSTR] 【目的地情報】 テーブル: [dbo].[Sheet1$] コラム:q1 列タイプ: varchar SSIS タイプ: 文字列 [DT_STR]
不思議なことに、1 つの列にソース タイプ: LongText と宛先タイプ: nvarchar があり、デフォルトで最大文字数が表示され、インポート時にすべてがその特定の列 (255 文字以上) でうまく機能します。他のすべての列nvarchar
はnvarchar
機能しますが、4000 または 3000 文字に変更しても 255 で途切れます。
Excel ファイルを .csv 形式で再保存しようとしましたが、SQL で実行中 (エラー) と表示されます。
タスク 1: データ変換に失敗しました。列 "Column 13" のデータ変換は、ステータス値 4 とステータス テキスト "テキストが切り捨てられたか、1 つ以上の文字がターゲット コード ページで一致しませんでした" を返しました タスク 1: 切り捨てが発生したため、"出力列 "列 13" (62)" は失敗し、"出力列 "列 13" (62)" の切り捨て行の配置は、切り捨ての失敗を指定します。指定されたコンポーネントの指定されたオブジェクトで切り捨てエラーが発生しました。 タスク 1: ファイルの処理中にエラーが発生しました パイプライン エンジンが PrimeOutput() を呼び出したときに、コンポーネントがエラー コードを返しました。エラー コードの意味はコンポーネントによって定義されますが、エラーは致命的であり、パイプラインは実行を停止しました。これより前にエラー メッセージが投稿され、失敗に関する詳細情報が記載されている場合があります。
クライアントにデータを再インポートして .csv 形式で保存するように依頼することはできません。
ソース タイプ: LongText および宛先タイプ: nvarchar のように、SQL で受け入れられる方法で Excel バージョンをフォーマットすることは可能ですか? (なぜvarchar
うまくいかないのかわかりません)
セルをテキストに変更したり、1列ずつコピーしてテキスト形式に貼り付けたりするなど、Excelの簡単なタスクを既に使用しました。