Die gespeicherte Prozedur in WordPress in eine database mit mehreren Standorten verschieben

Ich bekomme eine WordPress Multisite und muss Informationen von der Site extrahieren. Ich habe eine gespeicherte Prozedur geschrieben, die rekursiv eine Baumbeziehung für Posts einer bestimmten Art erstellt. Jetzt frage ich mich, wie ich die gespeicherte Prozedur in die databaseen aller Sites übertragen kann. (Da es sich um eine Multisite-Konfiguration handelt, hat jede Site (in diesem Fall eine Subdomain) eine separate database.)

Bitte helfen Sie mir in dieser Hinsicht.

WordPress-Version: 3.5.1 Multisite-Konfigurationstyp: Subdomains

//code needs refinement DELIMITER // CREATE PROCEDURE getPath(IN post_id INT, IN return_path TEXT) BEGIN DECLARE done INT DEFAULT 0; DECLARE a INT; DECLARE b TEXT; DECLARE cur1 CURSOR FOR (SELECT * FROM TempTable112); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TABLE IF EXISTS TempTable112; SET max_sp_recursion_depth := 10; CREATE TEMPORARY TABLE TempTable112 AS SELECT id,post_title FROM wp_101_posts WHERE post_parent = post_id and post_status='publish'; SET @s = CONCAT('SELECT * INTO OUTFILE ',"'", CONCAT('Sample',FLOOR(1000+RAND()*9999)),'.txt',"'",' FROM TempTable112'); PREPARE stmt2 FROM @s; EXECUTE stmt2; DEALLOCATE PREPARE stmt2; OPEN cur1; read_loop: LOOP FETCH cur1 INTO a,b; IF done = 1 THEN LEAVE read_loop; END IF; SET return_path = CONCAT('/',return_path,b); CALL getPath(a, return_path); END LOOP; CLOSE cur1; END // DELIMITER ; 

Solutions Collecting From Web of "Die gespeicherte Prozedur in WordPress in eine database mit mehreren Standorten verschieben"

Hier sind die Schritte:

SCHRITT 01: Code in eine Textdatei einfügen

Öffnen Sie einen Texteditor (vi, nano, emacs) und fügen Sie Ihren Code ein.

Speichern Sie es als /tmp/mynewcode.sql

Schritt 02: Sammeln Sie alle databasenamen

 MYSQLCONN=`-uroot -ppassword` SQLSTMT="SELECT schema_name FROM information_schema.schemata" SQLSTMT="${SQLSTMT} WHERE schema_name NOT IN" SQLSTMT="${SQLSTMT} ('information_schema','performance_schema','mysql')" mysql ${MYSQLCONN} -ANe"${SQLSTMT}" > /tmp/dbnames.txt 

Schritt 03: Laden Sie die gespeicherte Prozedur in jede database, die in /tmp/dbnames.txt

 for DB in `cat /tmp/dbnames.txt` ; do mysql ${MYSQLCONN} -D${DB} < /tmp/mynewcode.sql ; done 

SCHRITT 04: Entferne die Dateien, die du gemacht hast (OPTIONAL)

 rm -f /tmp/dbnames.txt rm -f /tmp/mynewcode.sql 

Das ist es.

Versuche es !!!