Mittlerweile gibt es mehr als 3.000 solcher Datensätze in der Datenbank. Jeder Datensatz enthält den chinesischen Namen der Region und den englischen Namen der Region (wie unten gezeigt)
Ich möchte jetzt die Redis-Warteschlangen lpush und rpop verwenden, um Batch-Updates zu implementieren. Ich habe die SQL-Anweisung bereits geschrieben (wie unten gezeigt)
Ich habe den Code so geschrieben (wie unten gezeigt). Ich habe mehr als 3.000 SQL-Anweisungen in einer Liste gespeichert (lpush) und mich darauf vorbereitet, sie einzeln herauszunehmen und auszuführen (rpop) und sie einzeln auszuführen Ich weiß nicht, wie ich sie als nächstes schreiben soll. Jetzt habe ich auch den Wert der Liste in der CLI eingefügt verstümmelt sein (wie unten gezeigt). Ich habe --raw hinzugefügt, als ich die CLI gestartet habe
Vielen Dank an alle~
Antwortinhalt:
Ich möchte jetzt die Redis-Warteschlangen lpush und rpop verwenden, um Batch-Updates zu implementieren. Ich habe die SQL-Anweisung bereits geschrieben (wie unten gezeigt)
Ich habe den Code so geschrieben (wie unten gezeigt), ich habe mehr als 3.000 SQL-Anweisungen in einer Liste gespeichert (lpush) und mich darauf vorbereitet, sie einzeln herauszunehmen und auszuführen (rpop) und sie einzeln auszuführen Ich weiß nicht, wie ich sie als nächstes schreiben soll. Jetzt habe ich auch den Wert der Liste unter cli eingefügt verstümmelt (wie unten gezeigt). Ich habe beim Starten der CLI „--raw“ hinzugefügt
Vielen Dank an alle~
Danke für die EinladungTatsächlich brauchen Sie kein Redis. Sie können das gesamte SQL in einer Datei ablegen, jedes einzelne lesen und jedes einzelne ausführen?
<code class="php">function getSql() { $fp = fopen('sql.txt', 'r'); while (!feof($fp)) { yield fgets($fp); } } foreach (getSql() as $sql) { executeSql($sql); } function executeSql() { //执行语句 }</code>
Dies kann mit nur einer SQL-Anweisung und minimalem Overhead durchgeführt werden (eine Datenbankverbindung, die Leistung ist ähnlich wie beim Batch-Einfügen in Daten).
<code>insert into base_region(region_name, en_name) values('中国','Zhongguo'), ('北京', 'Beijing'),...,('上海', 'Shanghai') on duplicate key update en_name = values(en_name);</code>
Zwei Punkte müssen beachtet werden:
löschen, nachdem die SQL ausgeführt wurde.