1

スプレッドシートを SQL Server データベースにロードするのに非常に多くの問題があります。

現在、SSIS パッケージを使用してデータをロードしていますが、データをロードするために多くの調整を行う必要がありました。

  • すべての数値はテキスト形式にする必要があります (そうしないと、適切に読み込まれません)。
  • 数値をロードするには、数値の前に一重引用符 (') を付ける必要がある場合があります。
  • 列に数値セルとテキスト セルが混在している場合、テキスト セルをファイルの最初に配置する必要があります (そうしないと、数値のみが読み込まれ、テキストが NULL として読み込まれます)。
  • ユーザーが列名を変更すると、ファイルはロードされません。
  • ユーザーがタブ名を変更すると、ファイルは読み込まれません。
  • ユーザーが新しい列を追加すると (シートの最後であっても)、ファイルは読み込まれません。
  • ファイル内の余分なシートは問題ありません。
  • 日付は、適切に読み込まれるかどうかにかかわらず、機密性が高いようです。
  • Excel ファイルへの接続文字列には、"IMEX=1" を含める必要があります。
  • スケジュールされた SSIS ジョブは、64 ビット システムでも 32 ビットとして実行する必要があります。

すべてのフィールドがnvarchar. 次に、読み込まれると、SSIS パッケージの次のステップでそのデータを、型指定されたデータ フィールドを含む作業テーブルに転送します。

Excel ファイルをフォーマットする方法についてユーザーに課さなければならないすべての要件は、本当に面倒です。通常、ファイルが読み込まれる前に、すべてのフォーマットの問題が修正されるまで、ファイルを複数回送り返す必要があります。このスラッシュをなくしたい。

この種の問題に直面しているのは私だけではないことを私は知っています。だから、私は尋ねなければなりません...

SQL Server データベースにデータをロードするための Excel のより良い代替手段は何ですか?

または、これについて間違った方法で行っていますか? Excel スプレッドシートを読み込むために SSIS 以外のものを使用する必要がありますか?

4

2 に答える 2

1

OpenRowSet を試すことができます:

SELECT *
INTO SomeTable
From OpenRowSet('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=\\servername\c$\filename.xls;HDR=YES;IMEX=1', [Sheet2$])
于 2012-06-14T23:48:13.830 に答える
0

実際にはSQLの答えではありませんが、簡単なものです:

含まれるデータ フィールド以外のすべてがロックされている Excel スプレッドシートにデータをコピー アンド ペーストすることをユーザーに要求できます。これにより、説明されている問題点の多くが回避されます。

于 2012-06-15T00:17:45.417 に答える