2016-07-25 8 views
0

後に他のレコードの削除にもかかわらず、元のファイルの各レコードを維持するために:どのように小さなチャンクに大きなSQLダンプファイルを分割し、ここで私は(MySQLの例)で何をしたいのです

  1. 構造のみをダンプ - structure.sqlをdata.sqlに
  2. splitingのdata.sqlに、各テーブルを置くデータ情報別々のファイル - - table1.sql、table2の、SQL、table3.sql ... tablen.sql
  3. をすべてのテーブルのデータをダンプ
  4. 分割私は#4段階に問題があり、リモートセキュアなserwerwer

のうち、すべてのディレクトリを対処私の地元のgitリポジトリ

  • 内のすべてのファイルをコミット小さなファイルに各テーブル(ファイルあたり1Kライン)
  • table1_a.sqltable1_b.sqltable1_c.sql

    は、例えば、私は3つのファイルに分割しtable1.sql。 新しいダンプに新しいレコードがある場合は、それがtable1_b.sqlに追加されたばかりです。

    table1_a.sqlにあるレコードが削除された場合、次のすべてのレコードが移動し、gitはtable1_b.sqlとtable1_c.sqlファイルを変更されたものとして扱い、OKではありません。

    基本的には、SCMでSQLバックアップを維持するアイデア全体を破壊します。

    私の質問:大規模なSQLダンプファイルを小さなチャンクに分割し、後で他のレコードを削除したにもかかわらず各レコードを元のファイルに保持する方法はありますか?

  • 答えて

    0

    全く分割しないでください。または、PK値の範囲で分割します。または、1つのファイルにつき1 db行まで右に分割します(そして、tablenameの後にファイルに名前を付け、主キーの内容に名前を付けます)。 500行のファイルに分割SQLダンプに

    (。それ以外の私の本能的な反応であっても、より明白なXYの答えから)

    +0

    を私はしないでくださいどの値がPKであるかを知る。 Data.sqlはmysqldumpからのものです。 –

    0

    があなたのターミナルで実行します。

    $ split -l 5000 hit_2017-09-28_20-07-25.sql dbpart- 
    
    関連する問題