2017-11-29 6 views
0

Openrowsetを使用して、「ステータス」列を持つExcelをインポートしています。その値は「TRUE/FALSE/CANCELLED」です。私はTypeGuessRows = 0に応じてレジストリを設定しました。 Excelファイルの "status"列に "TRUE/FALSE/CANCELED"という値が含まれている場合、期待通りにテキスト値としてインポートされます。Openrowset for excel:True/Falseを1/0に変換しない

ただし、「TRUE/FALSE」のみを含む場合、インポートされる値は「1」および「0」になります。だからいくつかのExcelファイルをインポートした後、私のSQLテーブルの列の値は、 "TRUE、FALSE、CANCELLED、1,0"です。 TRUE/FALSEを1/0に自動的に変換せずにSQL Serverにテキストをインポートする方法を教えてください。私は1/0をTRUE/FALSEに戻すために愚かなSQL文を書いてはいけません。 他の解決方法はどうですか?

答えて

0

この問題は、特定のファイルにTRUEまたはFALSE値しかない場合に発生します。その場合、すべての行を走査した後でも実際のデータ型を知る方法がないためです。 (インポートファイルで利用可能なヘッダを持っている場合は、あなただけの一番上の行からデータ型を推測するTypeGuessRows = 1を設定することができます)

問題を解決する方法の1つは、(列を選択し、Excelを開くことですTRUE/FALSEを指定)を右クリックし、ポップアップメニューから[セルの書式設定...]を選択します。 [番号]タブで、[テキストをカテゴリとして]を選択します。 [OK]をクリックします。

もう1つの方法は、挿入直後に行を更新することです。

ありがとうございました。

+0

MSがTRUE/FALSEから1/0に自動変換を無効にする公式の方法を提供していないという悪い知らせです。複雑なExcelファイルがあるため、必要に応じてTypeGuessRows = 0を設定する必要があります。 セルのフォーマットを変更することは、列を再定義する追加の手順が必要ですが、解決策として機能します。しかし、それは "セルの書式設定..."を使用していません。代わりに、データグループの下に「テキストを列に」を使用し、列をテキストとして定義して、完全に機能させる必要があります。 –

関連する問題