2016-07-25 7 views
0

Hier ist, was ich tun möchte, mit (MySQL Beispiel) aufzuspalten:Wie groß SQL-Dump-Datei in kleine Stücke und halten jeden Datensatz in Ursprungsdateien trotz später andere Aufzeichnungen Löschungen

  1. Dumping nur Struktur - structure.sql
  2. Dumping alle Datentabelle - data.sql
  3. spliting data.sql und setzen jeweils Tabellendaten info separate Dateien - table1.sql, table2, sQL, table3.sql ... tablen.sql
  4. Splitting jede Tabelle in kleinere Dateien (1k Zeilen pro Datei)
  5. alle Dateien in meinem lokalen Git Repository
  6. Bewältigungs alle dir, um sichere Remote serwerwer

Ich habe ein Problem mit # 4 Schritt commiting.

Zum Beispiel teile ich table1.sql in 3 Dateien: table1_a.sql und table1_b.sql und table1_c.sql. Wenn auf neuen Dump gibt es neue Datensätze, die in Ordnung ist - es ist nur zu Table1_b.sql hinzugefügt.

Aber wenn Datensätze gelöscht werden, die in table1_a.sql waren, werden alle nächsten Datensätze verschoben und git behandelt Dateien table1_b.sql und table1_c.sql als geändert und das ist nicht OK.

Grundlegend zerstört es ganze Idee, SQL-Backup in SCM zu halten.

Meine Frage: Wie große sql-Dump-Datei in kleine Stücke aufgeteilt und jeden Datensatz in Origin-Dateien trotz später anderer Datensätze Streichungen beibehalten?

Antwort

0

Teilen Sie sie überhaupt nicht auf. Oder teilen Sie sie nach Bereichen von PK-Werten. Oder teilen Sie sie bis zu 1 db Zeile pro Datei (und benennen Sie die Datei nach Tabellenname + den Inhalt des Primärschlüssels).

(Das abgesehen von der noch deutlicher XY Antwort, die meine instinktive Reaktion war.)

+0

ich nicht weiß, welche Werte PKs sind. Data.sql stammt von mysqldump. –

0

Um Split SQL-Dumps in Dateien von 500 Zeilen im Terminal ausführen:

$ split -l 5000 hit_2017-09-28_20-07-25.sql dbpart- 
Verwandte Themen