2016-08-18 6 views
3

インポートアシスタントを使用してCSVをSQL Server 2008 R2にインポートしようとしています。
手順を実行すると、マッピングの概要がわかります。問題は、列の内容に関係なく、デフォルトごとに、すべてのタイプがvarcharに設定されていると50にサイズということ、である:私の場合はインポート時にデータ型を自動的に調整する

enter image description here

、さまざまなコンテンツタイプと100以上の列が(あります数字、日付、長いテキストなど)。私がまだ進むと、最終的にエラーメッセージが表示されます。一部の列ではテキストが長すぎるため、切り取らなければならず、結果としてインポートが失敗しました。

アシスタントがデータ型を自動的に処理するので、手動で1つ1つずつ調整する必要はありませんか?

+0

私はこれがあなたの質問に直接答えないことを知っていますが、CSVファイルをロードする必要があるときは、一般にBULK INSERTを使用します。テーブルのフィールドが小さすぎてデータを取得することができない限り、このメソッドを使用するフィールドの長さに問題はありませんでした。これはここで発生している問題と同じです。 –

答えて

0

これを解決する1つの方法は、CSVをExcelワークブックに変換することです。 SQL ServerのインポートアシスタントがExcelシートを読み取るとき、各フィールドの値の上位(一部の数値、私は想起していません)を見て、データ型を自動的に検出しようとします。あなたのデータが良好な形であれば、これはあなたの問題を完全に解決することができます。

CSVでエラーが発生する場合は、Excelでもエラーが発生する可能性がありますが、エラーメッセージは、どのフィールドが問題になるかを特定するのに役立ちます(テキストが切り捨てられた場合たとえば、数字の書式設定されたフィールドを見ないとわかりません。

また、非常に一般的なCSVインポートの問題は、フィールドデータの区切り値です。例えば。区切り文字がカンマで、フリーテキストの入力フィールドがある場合は、ユーザーがカンマを入力した可能性があります。 Excelシート版のファイルを使用して、これが問題であるかどうかをテストする簡単な方法は、find関数を使用してカンマをチェックし、アンダースコアのような区切り記号で置き換えることです。

区切り文字を変更することもできます。 Windowsで地域と言語の設定を使用する場合、 "リストセパレータ"をバーに|のようにデータに存在しないものに変更することができます。これを行うには、設定を変更し、ExcelでCSVを開き、新しいファイル名でCSVとして再保存します。 Excelは新しい文字を区切り文字として使用します。

関連する問題