MySQL-Datenbank Daten laden, vielfältige Verwendungsmöglichkeiten

MySQL-Datenbank Daten laden, vielfältige Verwendungsmöglichkeiten

Vielfältige Einsatzmöglichkeiten von MySQL Load Data

1. LOAD Grundlegender Hintergrund

Im Prozess des Datenbankbetriebs und der Datenbankwartung müssen wir zwangsläufig Textdaten verarbeiten und in die Datenbank importieren. Dieser Artikel organisiert einige gängige Szenarien des Imports und Exports zur Beispieldemonstration.

2. Grundparameter laden

Die folgenden Beispiele in diesem Artikel verwenden alle den folgenden Befehl, um Beispieldaten im CSV-Format zu exportieren (mit Kommas als Trennzeichen und doppelten Anführungszeichen als Trennzeichen).

-- Exportieren Sie die Basisparameter „select *“ in die Ausgabedatei „/data/mysql/3306/tmp/employees.txt“.
Zeichensatz utf8mb4
Felder, die mit ',' abgeschlossen sind
umschlossen von '"'
Zeilen, die mit '\n' beendet sind
von Mitarbeitern.Mitarbeitergrenze 10;

-- Grundlegende Parameter importieren, Daten in Datei „/data/mysql/3306/tmp/employees.txt“ laden
Ersetzen in Tabelle demo.emp
Zeichensatz utf8mb4
Felder, die mit ',' abgeschlossen sind
umschlossen von '"'
Zeilen, die mit '\n' beendet sind
...

3. Beispieldaten und Beispieltabellenstruktur laden

Nachfolgend finden Sie Beispieldaten, Tabellenstruktur und entsprechende Beziehungsinformationen

--Dateninhalt der exportierten Datei [root@10-186-61-162 tmp]# cat employees.txt
"10001","1953-09-02","Georgi","Facello","M","1986-06-26"
"10002","1964-06-02","Bezalel","Simmel","F","1985-11-21"
"10003","1959-12-03","Parto","Bamford","M","1986-08-28"
"10004","1954-05-01","Christian","Koblick","M","1986-12-01"
"10005","1955-01-21","Kyoichi","Maliniak","M","1989-09-12"
"10006","1953-04-20","Anneke","Preusig","F","1989-06-02"
"10007","1957-05-23","Tzvetan","Zielinski","F","1989-02-10"
"10008","19.02.1958","Saniya","Kalloufi","M","15.09.1994"
"10009","1952-04-19","Sumant","Peac","F","1985-02-18"
"10010","1963-06-01","Duangkaew","Piveteau","F","1989-08-24"

-- Beispiel einer Tabellenstruktur SQL > desc demo.emp;
+-------------+------------------+------+-----+---------+---------+-------+
| Feld | Typ | Null | Schlüssel | Standard | Extra |
+-------------+------------------+------+-----+---------+---------+-------+
| emp_no | int | NEIN | PRI | NULL | |
| Geburtsdatum | Datum | NEIN | | NULL | |
| Vorname | varchar(16) | NEIN | | NULL | |
| Nachname | varchar(16) | NEIN | | NULL | |
| fullname | varchar(32) | JA | | NULL | | -- Ein neues Feld in der Tabelle, das in der exportierten Datendatei nicht vorhanden ist | gender | enum('M','F') | NEIN | | NULL | |
| Einstellungsdatum | Datum | NEIN | | NULL | |
| modify_date | datetime | JA | | NULL | | -- Der Tabelle wird ein neues Feld hinzugefügt, das in der exportierten Datendatei nicht vorhanden ist.| delete_flag | char(1) | JA | | NULL | | -- Der Tabelle wird ein neues Feld hinzugefügt, das in der exportierten Datendatei nicht vorhanden ist.+-------------+---------------+------+-----+---------+---------+

-- Die entsprechende Beziehung zwischen den exportierten Daten und den Feldern emp_no birth_date first_name last_name gender hire_date
"10001" "1953-09-02" "Georgi" "Facello" "M" "1986-06-26"
"10002" "1964-06-02" "Bezalel" "Simmel" "F" "1985-11-21"
"10003" "1959-12-03" "Parto" "Bamford" "M" "1986-08-28"
"10004" "1954-05-01" "Christian" "Koblick" "M" "1986-12-01"
"10005" "1955-01-21" "Kyoichi" "Maliniak" "M" "1989-09-12"
"10006" "1953-04-20" "Anneke" "Preusig" "F" "1989-06-02"
"10007" "1957-05-23" "Tzvetan" "Zielinski" "F" "1989-02-10"
"10008" "19.02.1958" "Saniya" "Kalloufi" "M" "15.09.1994"
"10009" "19.04.1952" "Sumant" "Frieden" "F" "18.02.1985"
"10010" "1963-06-01" "Duangkaew" "Piveteau" "F" "1989-08-24"

4. Beispiel eines LOAD-Szenarios

Szenario 1. Die LOAD-Datei enthält mehr Felder als die Datentabelle

Nur ein Teil der Daten aus der Textdatei muss in die Datentabelle importiert werden

- Erstellen Sie vorübergehend eine Tabellenstruktur mit zwei Feldern SQL > create table emp_tmp select emp_no,hire_date from emp;
SQL > Beschreibung emp_tmp;
+-----------+------+------+-----+---------+---------+----------+
| Feld | Typ | Null | Schlüssel | Standard | Extra |
+-----------+------+------+-----+---------+---------+----------+
| emp_no | int | NEIN | | NULL | |
| Einstellungsdatum | Datum | NEIN | | NULL | |
+-----------+------+------+-----+---------+---------+----------+

-- Datenanweisung importieren, Daten in Datei „/data/mysql/3306/tmp/employees.txt“ laden
Ersetzen in Tabelle demo.emp_tmp
Zeichensatz utf8mb4
Felder, die mit ',' abgeschlossen sind
umschlossen von '"'
Zeilen, die mit '\n' beendet sind
(@C1,@C2,@C3,@C4,@C5,@C6) -- Dieser Teil entspricht den 6 Datenspalten in der Datei „employees.txt“ -- Nur die 2 in den exportierten Daten angegebenen Spalten werden mit den Feldern in der Tabelle abgeglichen. Die durch die Zuordnungsbeziehung angegebene Reihenfolge hat keinen Einfluss auf das Importergebnis. setze hire_date=@C6,
    emp_nr=@C1; 

-- Beispiel für Datenimportergebnis SQL > select * from emp_tmp;
+--------+------------+
|Mitarbeiternummer |Einstellungsdatum |
+--------+------------+
| 10001 | 26.06.1986 |
| 10002 | 21.11.1985 |
| 10003 | 28.08.1986 |
| 10004 | 01.12.1986 |
| 10005 | 12.09.1989 |
| 10006 | 02.06.1989 |
| 10007 | 10.02.1989 |
| 10008 | 15.09.1994 |
| 10009 | 18.02.1985 |
| 10010 | 24.08.1989 |
+--------+------------+
10 Zeilen im Satz (0,0016 Sek.)

Szenario 2. Die LOAD-Datei enthält weniger Felder als die Datentabelle

Die Tabellenfelder enthalten nicht nur alle Daten der Textdatei, sondern auch Zusatzfelder.

-- Datenanweisung importieren, Daten in Datei laden '/data/mysql/3306/tmp/employees.txt'
Ersetzen in Tabelle demo.emp
Zeichensatz utf8mb4
Felder, die mit ',' abgeschlossen sind
umschlossen von '"'
Zeilen, die mit '\n' beendet sind
(@C1,@C2,@C3,@C4,@C5,@C6) -- Dieser Teil entspricht den 6 Datenspalten in der Datei „employees.txt“ -- Ordnen Sie die Felder in der Datei den Feldern in der Tabelle zu und verarbeiten Sie die zusätzlichen Felder in der Tabelle nicht. setze emp_no=@C1,
   Geburtsdatum=@C2,
   Vorname=@C3,
   Nachname=@C4,
   Geschlecht=@C5,
   Einstellungsdatum=@C6;

Szenario 3. LOAD generiert benutzerdefinierte Felddaten

Aus der Überprüfung von Szenario 2 können wir ersehen, dass die neu hinzugefügten Felder fullname,modify_date,delete_flag in der Tabelle emp beim Import nicht verarbeitet werden und auf NULL-Werte gesetzt sind. Wenn Sie sie verarbeiten müssen, können Sie die Daten selbst über MySQL支持的函數definieren oder während LOAD固定值angeben. Sie können die Felder in der Datei auch mit Funktionen verarbeiten. In Kombination mit Import und Export kann eine einfache ETL-Funktion implementiert werden, wie unten gezeigt:

-- Datenanweisung importieren, Daten in Datei „/data/mysql/3306/tmp/employees.txt“ laden
Ersetzen in Tabelle demo.emp
Zeichensatz utf8mb4
Felder, die mit ',' abgeschlossen sind
umschlossen von '"'
Zeilen, die mit '\n' beendet sind
(@C1, @C2, @C3, @C4, @C5, @C6) -- Dieser Teil entspricht den 6 Datenspalten in der Datei employees.txt -- Der folgende Teil ordnet die Felder in der Tabelle eindeutig den Feldern in der Datendatei zu. Nicht vorhandene Daten werden durch Funktionsverarbeitung generiert (sie können auch auf einen festen Wert gesetzt werden)
setze emp_no=@C1,
   Geburtsdatum=@C2,
   first_name=upper(@C3), -- Konvertieren Sie die importierten Daten in Großbuchstaben last_name=lower(@C4), -- Konvertieren Sie die importierten Daten in Kleinbuchstaben fullname=concat(first_name,' ',last_name), -- Verketten Sie first_name und last_name gender=@C5,
   Einstellungsdatum=@C6 ,
   modify_date=now(), -- Aktuelle Zeitdaten generieren delete_flag=if(hire_date<'1988-01-01','Y','N'); -- Bedingte Operationen an den Werten durchführen, die basierend auf einer bestimmten Spalte generiert werden sollen 

Szenario 4. Daten mit fester Länge laden

Die Merkmale von Daten mit fester Länge sind wie folgt. Sie können die Funktion verwenden, um die feste Länge in der Zeichenfolge zu extrahieren und so die angegebenen Spaltendaten zu generieren.

SQL > auswählen 
    c1 als Beispieldaten,
    substr(c1,1,3) als c1,
    substr(c1,4,3) als c2,
    substr(c1,7,2) als c3,
    substr(c1,9,5) als c4,
    substr(c1,14,3) als c5,
    substr(c1,17,3) als c6 von t1
    
*************************** 1. Reihe ***************************
Beispieldaten: ABC Yu Zhenxing CD MySQL EF G-Datenbank c1: ABC
         c2: Yu Zhenxing c3: CD
         c4: MySQL
         c5: EFG
         c6: Datenbank

Beim Importieren von Daten mit fester Länge muss die Anzahl der Zeichen, die jede Datenspalte belegt, klar sein. Im folgenden Beispiel wird rpad verwendet, um Leerzeichen in den vorhandenen Tabellendaten zu füllen und Daten mit fester Länge zu generieren.

-- SQL für Daten mit fester Länge generieren > auswählen 
    concat(rpad(emp_nr,10,' '),
          rpad(Geburtsdatum,19,' '),
          rpad(Vorname,14,' '),
          rpad(Nachname,16,' '),
          rpad(Geschlecht,2,' '),
          rpad(Einstellungsdatum,19,' ')) als Daten mit fester Länge 
      von Mitarbeitern.Mitarbeitergrenze 10;

+--------------------------------------------------------------------------------------------------+
| Daten mit fester Länge |
+--------------------------------------------------------------------------------------------------+
| 10001 02.09.1953 Georgi Facello M 26.06.1986 |
| 10002 02.06.1964 Bezalel Simmel F 21.11.1985 |
| 10003 03.12.1959 Parto Bamford M 28.08.1986 |
| 10004 01.05.1954 Christian Koblick M 01.12.1986 |
| 10005 21.01.1955 Kyoichi Maliniak M 12.09.1989 |
| 10006 20.04.1953 Anneke Preusig F 02.06.1989 |
| 10007 23.05.1957 Tzvetan Zielinski F 10.02.1989 |
| 10008 19.02.1958 Saniya Kalloufi M 15.09.1994 |
| 10009 19.04.1952 Sumant Peac F 18.02.1985 |
| 10010 01.06.1963 Duangkaew Piveteau F 24.08.1989 |
+--------------------------------------------------------------------------------------------------+

-- Daten mit fester Länge exportieren 
    concat(rpad(emp_nr,10,' '),
          rpad(Geburtsdatum,19,' '),
          rpad(Vorname,14,' '),
          rpad(Nachname,16,' '),
          rpad(Geschlecht,2,' '),
          rpad(Einstellungsdatum,19,' ')) als Daten mit fester Länge 
in Ausgabedatei '/data/mysql/3306/tmp/employees_fixed.txt'
Zeichensatz utf8mb4
Zeilen, die mit '\n' beendet sind
von Mitarbeitern.Mitarbeitergrenze 10;

--Datenexportbeispiel [root@10-186-61-162 tmp]# cat employees_fixed.txt
10001 02.09.1953 Georgi Facello M 26.06.1986
10002 02.06.1964 Bezalel Simmel F 21.11.1985
10003 03.12.1959 Parto Bamford M 28.08.1986
10004 1954-05-01 Christian Koblick M 1986-12-01
10005 21.01.1955 Kyoichi Maliniak M 12.09.1989
10006 1953-04-20 Anneke Preusig F 1989-06-02
10007 1957-05-23 Tzvetan Zielinski F 1989-02-10
10008 19.02.1958 Saniya Kalloufi M 15.09.1994
10009 1952-04-19 Sumant Peac F 1985-02-18
10010 1963-06-01 Duangkaew Piveteau F 1989-08-24

-- Daten mit fester Länge importieren, Daten in Datei '/data/mysql/3306/tmp/employees_fixed.txt' laden
Ersetzen in Tabelle demo.emp
Zeichensatz utf8mb4
Felder, die mit ',' abgeschlossen sind
umschlossen von '"'
Zeilen, die mit '\n' beendet sind
(@row) – Definieren Sie eine Datenzeile als gesamten Satz emp_no = trim(substr(@row,1,10)), – Verwenden Sie substr, um die ersten 10 Zeichen abzurufen und die führenden und nachfolgenden Leerzeichen zu entfernen birth_date = trim(substr(@row,11,19)), – Die nachfolgenden Felder sind ähnlich first_name = trim(substr(@row,30,14)),
   Nachname = trim(substr(@row,44,16)),
   fullname = concat(Vorname,' ',Nachname), -- Vorname und Nachname verketten gender = trim(substr(@row,60,2)),
   Einstellungsdatum = trim(substr(@row,62,19)),
   change_date = jetzt(),
   delete_flag = if(hire_date<'1988-01-01','Y','N'); -- Führen Sie bedingte Operationen an den Werten aus, die basierend auf einer bestimmten Spalte generiert werden sollen 

5. LOAD-Zusammenfassung

1. Standardmäßig ist die Importreihenfolge in der Textdatei列-從左到右,行-從上到下unten.

2. Wenn die Tabellenstruktur und die Textdaten inkonsistent sind, wird empfohlen, die Spalten in der Textdatei der Reihe nach zu nummerieren und eine Zuordnungsbeziehung zu den Feldern in der Tabelle herzustellen, um zu verhindern, dass Daten in das falsche Feld importiert werden.

3. Für Szenarien, in denen die zu importierende Textdatei groß ist, wird empfohlen,按行拆分, beispielsweise durch Verwendung von split

4. Nach dem Importieren der Datei wird empfohlen, die folgende Anweisung auszuführen, um zu überprüfen, ob die importierten Daten Warning oder ERROR aufweisen und wie viele Daten importiert wurden

  • GET DIAGNOSTICS @p1=NUMBER,@p2=ROW_COUNT;
  • select @p1 AS ERROR_COUNT,@p2 as ROW_COUNT;

5. Wenn zwischen den Daten der Textdatei und der Tabellenstruktur große Unterschiede bestehen oder die Daten bereinigt und konvertiert werden müssen, empfiehlt es sich, vor der Verarbeitung und Konvertierung ein professionelles ETL-Tool zu verwenden oder die Daten grob in MySQL zu importieren.

Oben finden Sie detaillierte Informationen zu den verschiedenen Verwendungsmöglichkeiten von MySQL Load Data. Weitere Informationen zur Verwendung von MySQL Load Data finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! , ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Springboot verwendet spring-data-jpa zum Betreiben der MySQL-Datenbank
  • DataGrip verbindet sich mit Mysql und erstellt eine Datenbank
  • Springboot konfiguriert MySQL-Datenbank spring.datasource.url Fehlerlösung
  • Implementierung der Datenwiederherstellung durch direktes Kopieren von Dateien im Datenverzeichnis in MySQL
  • Python pymysql Link Datenbankabfrageergebnisse in Dataframe-Instanz konvertiert
  • Grundlegende Operationen für MySQL-Datenbankdaten

<<:  Detaillierte Erklärung des Docker Compose-Orchestrierungstools

>>:  Dieser Artikel zeigt Ihnen, was Vite mit der Anfrage des Browsers macht

Artikel empfehlen

Methode zur Behebung von IE6-Space-Bugs

Schauen Sie sich den Code an: Code kopieren Der Co...

So verwenden Sie allgemeine MySQL-Funktionen zur Verarbeitung von JSON

Offizielle Dokumentation: JSON-Funktionen Name Be...

Detaillierte Einführung in den DOCTYPE-Typ

<br />Wir deklarieren DOCTYPE in HTML normal...

Lösung zur Schnittstellenverformung beim Einstellen der Frameset-Höhe

Derzeit habe ich ein Projekt erstellt, die Schnitt...

Tutorial zur Installation und Konfiguration von MySQL 8.0.12 unter Win10

Installation, Konfiguration, Start, Anmeldung und...

Ein praktischer Bericht über XSS-Angriffe in einem VUE-Projekt

Inhaltsverzeichnis Vorwort Entdecken Sie die Ursa...

HTML-Code für Multiheader-Tabellen

1. Code der Multiheader-Tabelle Code kopieren Der ...

Verwenden Sie reines CSS, um einen Switch-Effekt zu erzielen

Zuerst ist die Idee Um diesen Effekt zu erzielen,...