So kopieren Sie schnell eine Tabelle Erstellen Sie zunächst eine Tabelle db1.t und fügen Sie 1000 Datenzeilen ein. Erstellen Sie gleichzeitig eine Tabelle db2.t mit derselben Struktur. Angenommen, wir müssen die Datenzeilen mit a>900 in db1.t exportieren und in db2.t einfügen. mysqldump-Methode Einige wichtige Parameterhinweise:
CSV-Datei exportieren Wählen Sie * aus db1.t, wobei a>900 in die Ausgabedatei „/server_tmp/t.csv“; Diese Anweisung speichert das Ergebnis auf dem Server. Wenn sich der Client, auf dem Sie den Befehl ausführen, und der MySQL-Server nicht auf demselben Computer befinden, wird die Datei t.csv nicht im temporären Verzeichnis des Client-Computers generiert. Dieser Befehl überschreibt die Datei nicht für Sie, Sie müssen also sicherstellen, dass die Datei /server_tmp/t.csv nicht existiert, da sonst beim Ausführen der Anweisung ein Fehler gemeldet wird, weil eine Datei mit gleichem Namen existiert. Nachdem Sie die CSV-Exportdatei erhalten haben, können Sie den folgenden Befehl zum Laden von Daten verwenden, um die Daten in die Zieltabelle db2.t zu importieren. Daten aus der Datei „/server_tmp/t.csv“ in die Tabelle db2.t laden; Öffnen Sie die Datei /server_tmp/t.csv, verwenden Sie das Tabulatorzeichen (\t) als Trennzeichen zwischen Feldern und das Zeilenumbruchzeichen (\n) als Trennzeichen zwischen Datensätzen und lesen Sie die Daten. Starten Sie eine Transaktion. Bestimmen Sie, ob die Anzahl der Felder in jeder Zeile mit der Anzahl in der Tabelle db2.t übereinstimmt:
Wiederholen Sie Schritt 3, bis die gesamte Datei /server_tmp/t.csv eingelesen ist, und bestätigen Sie die Transaktion. Methode der physischen Kopie Sowohl die mysqldump-Methode als auch die Methode zum Exportieren von CSV-Dateien sind logische Datenimportmethoden, d. h. Daten werden aus der Tabelle db1.t gelesen, Text generiert und anschließend in die Zieltabelle db2.t geschrieben. Gibt es eine Möglichkeit, Daten physisch zu importieren? Ist es beispielsweise möglich, die .frm-Datei und die .ibd-Datei der db1.t-Tabelle direkt in das db2-Verzeichnis zu kopieren? Die Antwort ist nein. Denn zusätzlich zu diesen beiden physischen Dateien muss eine InnoDB-Tabelle auch im Datenwörterbuch registriert sein. Wenn Sie diese beiden Dateien direkt kopieren, werden sie vom System nicht erkannt und akzeptiert, da im Datenwörterbuch keine db2.t-Tabelle vorhanden ist. MySQL 5.6 führte die Methode transportierbarer Tablespaces ein, die die Funktion des physischen Kopierens von Tabellen durch Exportieren und Importieren von Tablespaces erreichen kann. Angenommen, das aktuelle Ziel besteht darin, eine Tabelle r zu kopieren, die mit der Tabelle t in der Datenbank von db1 identisch ist. Die spezifischen Ausführungsschritte sind wie folgt:
Vor- und Nachteile dieser drei Methoden Die physische Kopiermethode ist die schnellste, insbesondere zum Kopieren großer Tabellen. Es muss jedoch eine vollständige Kopie sein, keine Teilkopie. Daten müssen auf den Server kopiert werden. Es kann nicht verwendet werden, wenn sich der Benutzer nicht beim Datenbankhost anmelden kann. Darüber hinaus müssen sowohl die Quelltabelle als auch die Zieltabelle die InnoDB-Engine verwenden. Wenn Sie mysqldump zum Generieren einer Datei mit INSERT-Anweisungen verwenden, können Sie dem Where-Parameter Filterbedingungen hinzufügen, um nur einen Teil der Daten zu exportieren. Einer der Nachteile dieser Methode besteht darin, dass sie keine komplexeren Where-Bedingungen wie „Join“ verwenden kann. Die Methode „Select ... into outfile“ ist die flexibelste und unterstützt alle SQL-Schreibmethoden. Zu den Nachteilen dieser Methode gehört allerdings, dass immer nur die Daten einer Tabelle exportiert werden können und die Tabellenstruktur zudem mit einem weiteren Anweisung separat gesichert werden muss. Die beiden letztgenannten Methoden sind logische Backups und können Engine-übergreifend verwendet werden. Globale MySQL-Berechtigungen SELECT * FROM MYSQL.USER WHERE USER='UA'\G Alle Berechtigungen anzeigen Der Umfang umfasst das gesamte MySQL und die Informationen werden in der Benutzertabelle von MySQL gespeichert. Gewähren Sie dem Benutzer ua die höchste Berechtigung: Dieser Grant-Befehl bewirkt zwei Dinge: Er ändert die Berechtigungsfelder in der mysql.user-Tabelle auf der Festplatte auf Y und ändert den Zugriffswert des entsprechenden Objekts des Benutzers im acl_user im Speicher auf „alle 1“. Wenn sich ein neuer Client erfolgreich mit dem Benutzernamen ua anmeldet, verwaltet MySQL ein Thread-Objekt für die neue Verbindung. Alle Entscheidungen über globale Berechtigungen werden direkt anhand der im Thread-Objekt gespeicherten Berechtigungsbits getroffen. Der Befehl „Grant“ aktualisiert die Festplatte und den entsprechenden Speicher für globale Berechtigungen. Die neu erstellte Verbindung verwendet die neuen Berechtigungen. Die globalen Berechtigungen der bestehenden Verbindung werden durch die Gewährung nicht beeinflusst. Es gibt auch zwei entsprechende Vorgänge. Das Berechtigungsfeld auf der Festplatte wird auf Bit N geändert und der Zugriffswert des Objekts im Speicher wird auf Bit 0 geändert. mysqlDB-Berechtigungen Verwenden Sie SELECT * FROM MYSQL.DB WHERE USER = 'UA'\G, um die Datenbankberechtigungen des aktuellen Benutzers sowie die Berechtigungen zum Ändern von Objekten auf der Festplatte und im Speicher anzuzeigen. Die Datenbankberechtigungen werden in der Tabelle mysql.db gespeichert. Hinweis: Im Gegensatz zu globalen Berechtigungen wirken sich Datenbankberechtigungen auf vorhandene Verbindungsobjekte aus. MySQL-Tabellenberechtigungen und Spaltenberechtigungen Tabellenberechtigungen werden in mysql.tables_priv gespeichert, Spaltenberechtigungen werden in mysql.columns_priv gespeichert und diese beiden Berechtigungstypen werden kombiniert und in der Hash-Struktur column_priv_hash im Speicher gespeichert. Ähnlich wie bei Datenbankberechtigungen wird jedes Mal, wenn diese beiden Berechtigungen erteilt werden, die Datentabelle geändert und die Hash-Struktur im Speicher wird synchron geändert. Daher wirkt sich der Betrieb dieser beiden Berechtigungstypen auch auf vorhandene Verbindungen aus. Verwenden Sie Szenarien für das Leeren von Berechtigungen In einigen Dokumenten wird erwähnt, dass der Befehl „Flush Privileges“ unmittelbar nach der Gewährung von Berechtigungen ausgeführt werden muss, damit die Grant-Anweisung wirksam wird. Tatsächlich sollte eine genauere Aussage lauten: Wenn die Berechtigungen in der Datentabelle nicht mit den Berechtigungsdaten im Speicher übereinstimmen, kann die Anweisung „Flush Privileges“ verwendet werden, um die Speicherdaten neu aufzubauen und einen konsistenten Zustand zu erreichen. Wird beispielsweise zu einem bestimmten Zeitpunkt ein Datensatz einer Datentabelle gelöscht, die Daten im Speicher sind aber weiterhin vorhanden, schlägt die Autorisierung des Benutzers fehl, da der Datensatz in der Datentabelle nicht gefunden werden kann. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Linux-Installation, MongoDB-Start und Lösung allgemeiner Probleme
Inhaltsverzeichnis Installieren Sie CentOS7 Konfi...
Dieser Artikel listet einige Tipps und Codes zu F...
In MySQL können Sie mit der REVOKE-Anweisung best...
Als ich begann, einen FTP-Server auf dem Server e...
Das CSS-Zählerattribut wird von fast allen Browse...
In diesem Artikel wird der spezifische JavaScript...
Manche Leute verwenden diese drei Tags auf pervers...
Der <base>-Tag gibt die Standardadresse oder...
In diesem Artikelbeispiel wird der spezifische Ja...
Inhaltsverzeichnis 1. Grundkonzepte und Grundbefe...
Vorwort Die Master-Slave-Replikationsbeziehung vo...
Inhaltsverzeichnis 1. Primärschlüssel vorhanden 2...
Inhaltsverzeichnis Was ist das Protokoll langsame...
Auf einer Seite gibt es viele Steuerelemente (Elem...
Code kopieren Der Code lautet wie folgt: ein:link...