1. Baidu-Enzyklopädie1. MySQLMySQL behauptet, die beliebteste Open-Source-Datenbank zu sein. Das M in LAMP bezieht sich auf MySQL. Auf LAMP erstellte Anwendungen verwenden MySQL, etwa WordPress, Drupal und die meisten anderen PHP-Open-Source-Programme. MySQL wurde ursprünglich von MySQL AB entwickelt und 2008 für 1 Milliarde Dollar an Sun verkauft, das 2010 von Oracle übernommen wurde. Oracle unterstützt mehrere Versionen von MySQL: Standard, Enterprise, Classic, Cluster, Embedded und Community. Einige davon können kostenlos heruntergeladen werden, andere sind kostenpflichtig. Der Kerncode basiert auf der GPL-Lizenz. Da MySQL von Oracle kontrolliert wird, befürchtet die Community, dass dies Auswirkungen auf die Open Source von MySQL haben könnte. Daher wurden einige Zweige entwickelt, beispielsweise MariaDB und Percona. 2. PostgreSQLPostgreSQL bezeichnet sich selbst als die weltweit fortschrittlichste Open-Source-Datenbank. Einige Fans von PostgreSQL sagen, es sei mit Oracle vergleichbar, jedoch ohne den hohen Preis und den aufdringlichen Kundendienst. Es wurde ursprünglich 1985 an der University of California, Berkeley als Nachfolger der Ingres-Datenbank entwickelt. PostgreSQL ist ein vollständig von der Community betriebenes Open-Source-Projekt. Es bietet eine einzige voll funktionsfähige Version, im Gegensatz zu MySQL, das mehrere verschiedene Community-, Business- und Enterprise-Editionen bietet. PostgreSQL basiert auf der liberalen BSD/MIT-Lizenz, die es Organisationen ermöglicht, den Code zu verwenden, zu kopieren, zu ändern und weiterzugeben, solange sie einen Copyright-Vermerk angeben. 3. Vorteile von PostgreSQL gegenüber MySQL(1) Es handelt sich nicht nur um eine relationale Datenbank, sondern sie kann auch speichern: Arrays, egal ob Ein-Bit-Arrays oder Mehr-Bit-Arrays, unterstützen JSON (hStore) und JSONB, was viel effizienter ist als die Verwendung von Textspeichern. (2) Unterstützung der Erweiterung zur Verarbeitung geografischer Informationen (3) REST-API kann schnell erstellt werden (4) Die Unterstützung skalierbarer Indextypen wie R-Bäume erleichtert die Verarbeitung einiger spezieller Daten. Für MySQL ist die Verarbeitung baumartiger Designs sehr kompliziert und es muss viel Code geschrieben werden. PostgreSQL kann jedoch effizient mit Baumstrukturen umgehen. (5) Bessere Unterstützung externer Datenquellen (6) Es gibt keine Längenbeschränkung für Zeichenfolgen usw... 2. InsertOrUpdate-Codebeispiel in Postgres1. Erstellen Sie die BenutzertabelleTabelle erstellen public.t_user ( Benutzername varchar(100) NOT NULL, Alter int4 NICHT NULL STANDARD 0, "Passwort" varchar(100) NULL, gelöscht int4 NULL, created_time Zeitstempel NULL ); ERSTELLEN SIE EINEN EINDEUTIGEN INDEX t_user_union_name_age_password ON public.t_user USING btree (Benutzername, Passwort, Alter); 2. Einfacher Weg zum Erreicheneinfügen hinein public.t_user (Benutzername, Passwort, Alter, Erstellungszeit) Werte ('zs', '123', 18,jetzt()), ('ls', '123456', 19,jetzt()),('ww', '123', 20,jetzt()) bei Konflikten (Benutzername, Alter, Passwort) Update durchführen: Benutzername = ausgeschlossen.Benutzername,Alter = ausgeschlossen.Alter,Passwort = ausgeschlossen.Passwort,Erstellungszeit = ausgeschlossen.Erstellungszeit 3. Verwenden Sie die Unnest-Funktion zur Implementierungeinfügen hinein public.t_user (Benutzername, Passwort, Alter, Erstellungszeit) Werte (unnest(array['zs', 'ls', 'ww']), unnest(array['123', '123', '123456']), unnest(array[18, 19, 20]), unnest(array[jetzt(), jetzt(), jetzt()])) bei Konflikten (Benutzername, Alter, Passwort) Update durchführen: Benutzername = ausgeschlossen.Benutzername,Alter = ausgeschlossen.Alter,Passwort = ausgeschlossen.Passwort,Erstellungszeit = ausgeschlossen.Erstellungszeit 4. Wenn die Daten bereits vorhanden sind, tun Sie nichts3. Einführung in verwandte Schlüsselfunktionen1. aufheben (beliebiges Array) Die Funktion „Unnest“ konvertiert das Eingabearray in eine Tabelle, in der jede Spalte ein Element im entsprechenden Array darstellt. Wird hauptsächlich verwendet, um das Szenario der Konvertierung von Zeilen in Spalten abzuschließen. INSERT ON CONFLICT implementiert die PostgreSQL-Einfüge- und Aktualisierungsfunktion. Die virtuelle Tabelle EXCLUDED enthält die Datensätze, die wir aktualisieren möchten 4. Schreiben von userMapper.xml<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.guor.dao.UserMapper"> <!-- Stapeleinfügung --> <insert id="batchInsert" parameterType="java.util.HashMap"> <include refid="batchInsertSql"></include> </einfügen> <sql id="batchInsertSql"> INSERT INTO ${map.tableInfo.schemaName}.${map.tableInfo.tableName} ( "Tabellen-ID", "Dateiname", "Erstellungszeit", <foreach-Sammlung="map.list.get(0)" index="Schlüssel" item="Wert" Trennzeichen=","> "${Schlüssel}" </foreach> ) WERTE <foreach-Sammlung="Karte.Liste" Element="Liste" Trennzeichen=","> ( ${map.tableInfo.tableId}, #{map.tableInfo.fileName}, Jetzt(), <foreach Sammlung="Liste" Index="Schlüssel" Element="Wert" Trennzeichen=","> <wählen> <wenn test="map.varcharList.contains(key)"> #{Wert} </wann> <wenn test="map.dateList.contains(key)"> TO_TIMESTAMP(#{Wert},'jjjj-MM-tt hh24:mi:ss') </wann> <sonst> ${Wert} </sonst> </wählen> </foreach> ) </foreach> </sql> <!-- Stapelaktualisierung einfügen --> <insert id="batchInsertOrUpdate" parameterType="java.util.HashMap"> <include refid="batchInsertSql"></include> zum Thema Konflikte ( Dateiname, Tabellen-ID <if test="karte.tableInfo.flag"> , "ID-Nummer" </if> ) aktualisieren Satz "table_id" = ausgeschlossen."table_id", "Dateiname" = ausgeschlossen."Dateiname", "create_time" = ausgeschlossen."create_time", <foreach-Sammlung="map.list.get(0)" index="Schlüssel" Trennzeichen=","> "${key}" = ausgeschlossen."${key}" </foreach> </einfügen> </mapper> V. InsertOrUpdate-Codebeispiel in MySQL1. Tabellenanweisung erstellenTabelle „t_user“ erstellen ( `Benutzername` varchar (255) Zeichensatz utf8 COLLATE utf8_general_ci NOT NULL, `Passwort` varchar (255) Zeichensatz utf8 COLLATE utf8_general_ci NOT NULL, `Alter` int(0) NULL DEFAULT NULL, `Adresse` varchar (255) Zeichensatz utf8 Sortiert utf8_general_ci NULL Standard NULL, `create_time` datetime(0) NULL DEFAULT NULL, `update_time` datetime(0) NULL DEFAULT NULL, `version` int(0) NICHT NULL, EINZIGARTIGER INDEX `user_union_index`(`Benutzername`, `Passwort`, `Alter`) MIT BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamisch; 2. Gewöhnliche MethodeINSERT INTO t_user (Benutzername, Passwort, Alter, Erstellungszeit) WERTE('Jetzt' ,'123456',18,JETZT()) BEIM UPDATE FÜR DUPLIZIERTE SCHLÜSSEL Benutzername='Benutzername', Passwort='123456', erstelle_zeit=jetzt() 3. BEIM UPDATE DES DOPPELTEN SCHLÜSSELS„Insert into“ bei doppeltem Schlüsselupdate bedeutet Einfügen und Aktualisieren von Daten. Wenn der Datensatz einen Primärschlüssel oder einen eindeutigen Index enthält und die Datenbank bereits Daten enthält, wird sie mit den neuen Daten aktualisiert. Wenn keine Daten vorhanden sind, ist der Effekt derselbe wie bei „Insert into“. INSERT INTO t_user (Benutzername, Passwort, Alter, Erstellungszeit, Aktualisierungszeit, Version) WERTE('zs','123',10,jetzt(),jetzt(),1) ,( 'ls' ,'123456',20,jetzt(),jetzt(),1) ,( 'ww' ,'123',30,jetzt(),jetzt(),1) BEIM UPDATE FÜR DUPLIZIERTE SCHLÜSSEL Benutzername= WERTE(Benutzername) ,Passwort=VALUES(Passwort) , Alter = WERTE (Alter) ,Aktualisierungszeit=WERTE(Aktualisierungszeit) ,Version = Version + 1 4. Ersetzen durch„Ersetzen in“ bedeutet das Einfügen und Ersetzen von Daten. Wenn der Datensatz einen Primärschlüssel oder einen eindeutigen Index enthält und die Datenbank bereits Daten enthält, werden diese durch die neuen Daten ersetzt (zuerst löschen und dann einfügen). Wenn keine Daten vorhanden sind, ist der Effekt derselbe wie bei „Einfügen in“. REPLACE INTO t_user (Benutzername, Passwort, Alter, Erstellungszeit, Aktualisierungszeit, Version) WERTE ( 'zs' ,'123',10,jetzt(),jetzt(),1) 5. Fügen Sie IGNORE ein in„insert ignore into“ bedeutet, Konflikte so weit wie möglich zu ignorieren und gewaltsam einzufügen. INSERT IGNORE INTO t_user (Benutzername, Passwort, Alter, Erstellungszeit, Aktualisierungszeit, Version) WERTE ( 'zs' ,'123',10,jetzt(),jetzt(),1) , ('Nezha','123',30,jetzt(),jetzt(),2) 6. Zusammenfassung Beim Einfügen in Werte oder Einfügen in eine Auswahl in Stapeln werden die Atomizität und Konsistenz der Transaktion eingehalten, es sollte jedoch auf das Sperrproblem beim Einfügen in eine Auswahl geachtet werden. Wenn es vorhanden ist, dient Ersteres zum Löschen und dann zum Einfügen und Letzteres zum Aktualisieren. Dies ist das Ende dieses Artikels zur Implementierung von MySQL + PostgreSQL Batch Insert oder Update. Weitere Informationen zu MySQL + PostgreSQL Batch Insert oder Update finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Einige Gedanken und Erfahrungen zum Thema Gestaltung und Erstellung von Webseiten (Websites)
>>: Detaillierte Erklärung des Linux-Kernel-Makros Container_Of
Einführung Der Meta-Tag ist ein Hilfstag im HEAD-...
Inhaltsverzeichnis Vorwort 1. 404 Seite 1. Ursach...
Dieser Artikel zeichnet den detaillierten Install...
In diesem Artikelbeispiel wird der spezifische Co...
Beim Erstellen von Webseiten tritt häufig das Pro...
In diesem Artikel finden Sie das Installations-Tu...
Inhaltsverzeichnis Einführung Erste Schritte Eine...
Angenommen, es gibt zwei Linux-Server A und B, un...
Eigentlich ist das ganz einfach. Wir fügen ein a-...
Vorwort Bei der Entwicklung eines Projekts stieß ...
In den vorherigen Kapiteln haben wir die Auswahl ...
Einführung Dies ist Ihnen sicherlich schon einmal...
Inhaltsverzeichnis 1 Verwendung von v-if und v-sh...
Es gibt in letzter Zeit zu viel Wissen zu lernen,...
Im Vergleich zu vue2 verfügt vue3 über ein zusätz...