2011-01-06 6 views
1

私は過去数年間にexpodually成長したデータベースを定期的に更新する必要があります。お客様は大規模なスプレッドシート上にデータを提供しており、フォーマットを行い、データベースへのインポートを開始します。私はデータのインポートとエクスポート(32ビット)ウィザードを使用しています。データベースの1つの列には '1.1.1.2'などの値が含まれていますが、データベースのデータ型であるVarcharとしてインポートしています。しかし、 '8.5'のような値の場合、NULLはinseadにインポートされます。小数点が1つしかない場合にのみ発生します。VARCHARデータ型の場合、小数点以下はNULLを返すSQLへのEXCELのインポート

これはExcelの書式設定エラーですか、それとも間違ったデータ型ですか?

+0

これをどのデータベースにインポートしていますか? SQLサーバー? – PowerUser

+0

これは、このフィールドに#。#番号があるたびに発生しますか?散発的に発生する場合は、おそらくセル内に後続のスペースや改行があります。 – PowerUser

答えて

2

Excelで書式設定しています。私はインポートとエクスポートのデータウィザードとExcelで非常に問題を抱えていました。これで、Excelファイルをまずcsvファイルとして保存し、フォーマットを削除してからインポートします。これには数秒かかりますが、先にゼロを落としたり、ランダムなNULL値などを扱ったりすることから、後で時間が節約されました。

1

私の最初のアドバイスは、お客様にテキストファイルを送信するか、少なくとも.csvファイル。 Excelのコンバージョンは恐ろしいものであり、顧客がExcelを始めるのをやめた場合よりも、物事が適切に機能するように多くの時間を費やすことになります。

問題は、データ型が最も早い行によって決定され、Excelが後でデータがIntであると判断した場合、インポートによって不良データとみなされ、無効になります。

チューニング機能のオン: 私はリビングのデータをインポートします。インポートするデータやその他の種類のファイルを扱う際には、多くの問題が存在するため、Excelファイルの受け入れを拒否します。 Excelファイルを.csvとして保存する方法については、一部の方に指示を出さなければなりませんでしたが、単にデータソースとしてExcelを受け入れない場合は、インポートを作成するための費用がかかりません。 SSISを設計している人々(ウィザードがボンネットの下で使用しているもの)は、Excelがインポートする必要があるとは思えず、そのために適切なインポートパスを作成する時間を費やさなかったと思っていました。大声で叫ぶための自社製品です。 1つは、それが最高のサポートのいくつかを持っていると思います。 暴言機能をオフにします。

+0

確かに。私は、ファイルをAccessデータベースにインポートしてからSQLにインポートする必要があることがよくあります。これは、切り捨てによってデータが失われないようにするためです(SQLインポーターはすべての列を255にするのが好きです)。 Excelファイルは深刻なPITAになる可能性があります。 – Thomas

1

私は、 '数値フィールドの前に'を置くスクリプトを実行すると、SQLに正しくインポートできることが分かりました。

私はこれを12のうち1つのスプレッドシートで実行しましたが、なぜそれが問題になったのか分かりませんでした。

単純なVBAスクリプトでは、多くの行がある場合にこれを簡単に行うことができます。

関連する問題