1. ホーム
  2. sql

[解決済み] CSVファイルをインポートする際、各カラムにvarchar(MAX)が使用されているにもかかわらず、SQL Serverでエラーが発生する。

2023-07-04 06:09:17

質問内容

大きなCSVファイル(数ギガ)を SQL Server に挿入しようとしているのですが、一旦 Import Wizard を通過し、最後にファイルをインポートしようとすると、次のようなエラーレポートが表示されます。

  • 実行中 (エラー) メッセージ
<ブロッククオート

エラー 0xc02020a1: データフロータスク 1: データ変換に失敗しました。列のデータ 列 ""Title"のデータ変換は、ステータス値4とステータス text "テキストが切り捨てられたか、または1つ以上の文字がターゲットコードページで一致しませんでした。 ターゲット コード ページに一致しない文字があります。

( SQL Server Import and Export Wizard )

エラー 0xc020902a: データフロータスク1: ソース Train_csv.Outputs[Flat File Source Output].Columns["Title"]" は失敗しました。 は、切り捨てが発生し、切り捨ての行の処分が の切り捨て行の処分が失敗しました。 は切り捨ての失敗を指定します。指定されたコンポーネントの指定されたオブジェクトで、切り捨てエラーが発生しました。 指定されたコンポーネントの指定されたオブジェクトで切り捨てエラーが発生しました。

( SQL Server Import and Export Wizard )

エラー 0xc0202092 です。データフロータスク1: を処理中にエラーが発生しました。 ファイル "C:³³.csv"を処理中にエラーが発生しました。

( SQL Server Import and Export Wizard )

エラー 0xc0047038: データ フロー タスク 1: SSIS エラー コード dts_e_primeoutputfailed. ソース - Train_csv の PrimeOutput メソッドはエラーコード 0xC0202092 を返しました。 はエラーコード 0xC0202092 を返しました。 このコンポーネントは失敗コードを返しました。 コンポーネントは、パイプラインエンジンが PrimeOutput() を呼び出したときに、失敗コードを返しました。この失敗コードの意味は 失敗コードの意味はコンポーネントによって定義されていますが、このエラーは致命的で、パイプラインは実行を停止しました。 パイプラインは実行を停止しました。 この前にエラーメッセージが投稿されることがあります。 の前に、失敗に関する詳細な情報を含むエラーメッセージが投稿されるかもしれません。

( SQL Server Import and Export Wizard )

私は最初にファイルを挿入するテーブルを作成し、各カラムはvarchar(MAX)を保持するように設定しましたので、私はまだこの切り捨ての問題があることを理解していません。私は何を間違えているのでしょうか?

どのように解決するのですか?

SQL Server のインポートおよびエクスポート ウィザードでは、ソース データ タイプを Advanced タブでソースのデータ型を調整できます (これらは、新しいテーブルを作成する場合は出力のデータ型になりますが、それ以外の場合はソース データを処理するために使用されるだけです)。

データ型はMS SQLのものとは厄介なほど異なっており、代わりに VARCHAR(255) ではなく DT_STR で、出力列の幅は 255 . については VARCHAR(MAX)DT_TEXT .

そこで、データソースの選択で Advanced タブで、問題のあるカラムのデータ型を DT_STR から DT_TEXT (に変更します(複数の列を選択して、一度に変更することも可能です)。