web-dev-qa-db-ja.com

SQL Serverから単一の巨大なテーブルをエクスポートする方法は?

巨大なテーブルのコンテンツを本番データベースからエクスポートし、データを遠隔地のデータベースにインポートするタスクを与えられました。

テーブルには約45,000,000行あります。データベースで約4 GBのスペースを使用します。

その10列は、int、datetime、およびvarchar(n)<= 255型ですが、一部のvarcharフィールドには、改行と、一括コピーで使用される通常のフィールド区切り文字が含まれています。

行数が多いため、Excelにエクスポートすることはできません。 SSISを使用してFlatfileにエクスポートすることは可能です(約30分かかりました)。ただし、一部のフィールドが分​​割されているため、再インポートは自動ではありません。

私の現在の考えは

  1. 本番サーバーに新しいデータベースを作成する(本番データベースと同じ照合を使用)
  2. リカバリーモードをシンプルに設定します
  3. *を選択してprod_db..big_tableからcopy_of_tableにデータをコピー
  4. この新しいデータベースからmdfファイルを切り離し、他の場所に発送します
  5. アドホックデータベースの削除

単純な復旧モデルを使用してデータベースに挿入すると、新しいデータベースで最小限のログしか生成されず、この方法はデータをエクスポートする最速の1つであり、本番データベースへの影響は最小限です。

4
bernd_k

デフォルトではなくフォーマットファイルを使用するBCPが最善の策になると思いました。

フォーマットファイルの作成

5

あなたの方法はうまくいきます、私は新しいデータベースにデータファイルを事前に割り当てますので、自動拡張する必要はありません。バックアップは、デタッチと同様に機能します。また、移行先サーバーには、同じバージョン以上のSQLが必要です。

5
SqlACID