2016-09-08 12 views
2

SQL Serverにインポートするために、約90GBの非圧縮の.csvデータがあります。インターフェイスの最終的な要件に応じて、私はこのデータを分割することができないかもしれませんが、私ができるかどうかにかかわらず、これらはいくつかの大きなテーブルになるでしょう。合計で大ものの、行は比較的簡単です:SQL Server 2016 - 一括入力の前または後の圧縮

[Exchange] [Symbol] [Compare_To_Exchange] [Compare_To_Symbol] [Date] [Correlation] 
NYSE   ZTS  INDEX     DCXE    12/9/2013 0:00 -0.5521076 

私はSQL Serverのテーブルを圧縮に慣れていないよ、とまで読んでいます。私が答えを見つけることができないと思う1つの質問は、テーブルが空のときに圧縮して、バルクトランザクションで圧縮を実行する方が良いかどうか(パフォーマンスやその他の方法)、またはすべてのデータと圧縮?

空では空のテーブルに空のテーブルを作成するのが簡単ですが、私が読んだ記事の1つは、これに近づいていますトピックは圧縮がテーブルが一杯になると完了しなければならないことを示していたようだ。私はその違いを知っている誰の経験に感謝します。あなたが提供できる考え、情報、またはポインタについては、事前にお時間をいただきありがとうございます。

答えて

1

CSVファイルではなく、ここでデータベースを作成していることを覚えておくことが重要です。圧縮はCSVファイルでは意味がありますが、うまく設計されたデータモデルでは意味がありません。圧縮は非構造化データには意味がありますが、構造化データがあります。

データを正規化する場合、圧縮する必要はありません。あなたの例では、4または5ワードのデータとタイムスタンプに加えておそらく32ビットの数値を表示しています。したがって、1行あたり160ビット未満です。

より明確にする - >

[Exchange]   -> 16 bit index to look up in exchange table. 
[Symbol]    -> 16 bit index to look up in symbol table 
[Compare_To_Exchange] -> 16 bit index to look up in compare table 
[Compare_To_Symbol] -> 16 bit index to look up in compare table 
[Date]    -> 64 bit timestamp 
[Correlation]   -> 32 bit numeric 

あなたも、ルックアップテーブルが小さい場合は、これらの8ビット・インデックスの一部を作ることができるかもしれない

CSVよりもはるかに小さくなるだろう。それが日付であり、はるかに小さいタイムスタンプではない場合。

あなたが怠け者であれば、32ビットの整数または64を使用することもできますが、それでも行は小さくなります。デザイン内のデータの構造を使用する場合。

+0

非常に感謝しています、ホーガン。私は "90GB"に心配していましたが、ビットごとに考えるのは本当に止まっていませんでした。私の頭を正しい魚釣りに戻してくれてありがとう。 –

+0

@ShannonHolsinger - 私が助けることができたことを嬉しく思います。 – Hogan

関連する問題