0

サブフォルダー (都市名) を含むフォルダーがあり、それらのサブフォルダーには Excel ファイルがあります。サブフォルダーからすべての Excel ファイルを取得し、都市名に基づいて SQL Server テーブルにロードする必要があります。ファイルは以下のように構成されています。

ダラスフォルダにはこれらのファイルが含まれています

  • DALLAS_Cars_2011.xls
  • ダラス_トラック_2011.xls
  • DALLAS_Bikes_2011.xls

私の要件は、名前に基づいて、車のデータを車のテーブルに、トラックのデータをトラックのテーブルにロードする必要があり、すべての都市ファイルは、車、トラックなどの同じテーブルに入れる必要があることです。そして、都市名に基づいてID列を作成する必要があります。これは、アルファベット順に基づいている可能性があります。

4

2 に答える 2

0

を使用SSISして、Excel ファイルを SQL Server にロードできます。

  1. 3 つの変数を作成します: File、City、Table
  2. City 変数の式を作成して、ファイルから City 部分を取得します。
  3. テーブルについても同じことを行います
  4. foreach ファイル列挙子を作成する
  5. File 変数に完全修飾名を割り当てます
  6. Excel ソースと ole db 宛先を含むデータ フロー タスクを作成する
  7. File 変数を使用して取得する Excel 接続を作成します。
  8. ole db 接続を作成し、それを ole db 宛先に割り当て、Table 変数を宛先テーブルとして選択します。

都市の式の例:

ファイル変数の内容: C:\temp\Dallas\Dallas_Trucks_2011.xls

SUBSTRING(@[User::File], FINDSTRING(@[User::File], "\\", 3) + 1, FINDSTRING(SUBSTRING(@[User::File], FINDSTRING(@[User::File], "\\", 3) + 1, 99), "_", 1) -1)

式は を返す必要がありDallasます。3 番目\と 1番目の間の部分を取得します_

次の式は、1 番目と 2 番目Trucksの間の部分を取得して返します。__

SUBSTRING(@[User::File], FINDSTRING(@[User::File], "_", 1) + 1, FINDSTRING(SUBSTRING(@[User::File], FINDSTRING(@[User::File], "_", 1) + 1, 99), "_", 1) -1)

データ フロー タスクに派生列を追加して、City を列として追加することもできます。

編集:実際には、これが動的な Excel ファイルとテーブル定義で機能することを 100% 確信しているわけではありません。

于 2013-06-17T18:39:28.443 に答える