post eliminati in modo “soft” importati come post normali
Sono molto esigente, quindi se mi seguirai, dovresti ottenere un risultato piuttosto buono.
Sto pensando di passare a discourse da phpbb (cronologia versioni installate: 3.2.1 - 3.2.8).
Il problema è che uso postgresql per il db. Suggerimenti? Non ci ho provato ma presumo che non sia ancora supportato in base all’OP.
È mai uscito il nuovo script di importazione? Vedo che è passato poco più di un anno.
script/import_scripts/phpbb3 e script/bulk_import sono importatori completamente separati
l’importatore bulk è meno sofisticato (sebbene più veloce) e, ad esempio, non importerà gli allegati?
Se sì, sembra che ci siano degli svantaggi nell’usare l’importatore bulk…
Non c’è un’altra soluzione, allora? Sarebbe consigliabile esplorare la possibilità di eseguire una migrazione del database da postgresql a mysql o qualcosa di simile?
Non mi sono occupato personalmente del problema da postgresql a mysql, ma puramente dalla prospettiva di migrare da phpBB a Discourse, la mia opinione è: fai tutto il necessario per realizzare la migrazione.
Ho migrato due forum phpBB a Discourse e, sebbene ci siano state le solite lamentele da parte di un piccolo numero di utenti che si verificano con ogni cambiamento, i vantaggi di Discourse ne valgono assolutamente la pena! Non solo Discourse è più facile da mantenere e amministrare, ma l’engagement degli utenti integrato, la gestione delle immagini, la personalizzazione utente e la leggibilità di Discourse sono solo alcune delle funzionalità che sono così avanti rispetto a phpBB che non c’è paragone. Ottieni anche un supporto molto migliore con Discourse.
Non sono un esperto, ma una rapida ricerca sembra indicare che potresti migrare da postgresql a mysql eseguendo un dump dello schema, modificando i tipi di dati nelle istruzioni dello schema per farli corrispondere a quelli utilizzati da mysql, utilizzando lo schema modificato per creare le tabelle in un database mysql ed eseguendo quindi un’esportazione e importazione CSV tabella per tabella.
Una volta che hai il database mysql, potresti usare lo script di migrazione phpBB standard e avere tutti i tuoi allegati.
Non intendevo implicare che sarebbe stato facile, solo che ne vale la pena, è anche possibile farlo manualmente, e sembrano esserci molte risorse là fuori per realizzarlo, sia con strumenti automatici che manualmente.
Dato che odio Ruby e l’importatore esistente verrà deprecato a favore dell’importatore di massa (che non è ancora abbastanza buono per i miei scopi), sto procedendo con la strategia di migrazione da postgres a mysql.
Sto facendo progressi con la procedura guidata di migrazione di MySQL Workbench. Scriverò una piccola guida se avrà successo, ma finora sembra promettente.
in pratica, mysql workbench fallisce durante l’importazione di unicode. proverò domani con mariadb per vedere se riesco a impostare la codifica predefinita del database o qualcos’altro prima dell’importazione.
Sarebbe stato fantastico se MySQL Workbench avesse funzionato. Ho visto un sacco di segnalazioni di errori quando ho guardato le opzioni, quindi non l’ho consigliato.
Ho menzionato il dump dello schema e il metodo di esportazione/importazione CSV una volta prima, e lo menzionerò solo un’altra volta con una leggera modifica per renderlo molto più semplice e poi la smetterò.
Se vuoi seguire un percorso GUI:
Procurati un’esportazione solo struttura di tutte le tabelle da una copia funzionante della stessa versione di phpBB3 che stai utilizzando e che esegue MySQL/MariaDB. Ci vorrebbero letteralmente due minuti a qualcuno per crearne una da phpMyAdmin, che è disponibile sulla maggior parte degli host web che eseguono MySQL/MariaDB. (In alternativa, potresti essere in grado di ottenere le istruzioni CREATE TABLE necessarie dagli script di installazione di phpBB3 se non riesci a convincere qualcuno a eseguire l’esportazione solo struttura per te, o anche utilizzare un account di hosting web economico per eseguire un’installazione pulita della tua versione di phpBB3 in un ambiente MySQL/MariaDB e quindi eliminare i dati nelle tabelle che crea per creare un database MySQL/MariaDB vuoto.)
Trova l’accesso a un host web con MySQL/MariaDB e phpMyAdmin, crea il database, importa la struttura dall’esportazione solo struttura che hai creato nel passaggio 1 utilizzando phpMyAdmin.
Crea un’esportazione CSV per ogni tabella dal tuo database postgresql ed esegui un’importazione CSV nella tabella corrispondente utilizzando phpMyAdmin nel tuo nuovo database MySQL/MariaDB.
Penso che ciò impedirà eventuali problemi con charset e codifica e non dovrai capire tutti i tipi di dati e le dimensioni dei campi corrispondenti che sarebbero necessari se provassi a convertire manualmente il dump dello schema da postgre.
Posso fornirti un’istruzione SQL solo struttura, ma l’unico DB che ho ancora è da phpBB3 3.3.8, quindi potrebbe aggiungere altri problemi se stai usando la v. 3.2.x.
ahahah. sì, ci sono voluti alcuni trucchi non ovvi per farlo funzionare almeno per quanto ci sono riuscito. penso che potrebbe ancora funzionare, ma grazie per avermi dato un’altra strada da esplorare.
Ok, per fortuna. Ecco la mia soluzione per l’importazione di PostgreSQL.
Questo ti porterà da un dump PostgreSQL a un server MariaDB funzionante a cui puoi collegare l’importatore. Richiede Docker Compose.
Funziona per phpBB 3.2. Non ho idea di come funzioni per la 3.3. Se hai disperatamente bisogno del supporto per la 3.3, posso provare a risolverlo se mi fornisci un dump pg_dumpall di phpBB 3.3.
Il postid e il topicid migrati sono corretti, ma il nome utente è mancante. Questo lo rende non interattivo. Quando il nome utente è una stringa vuota, la citazione non si espande e non è possibile fare clic su di essa per seguire il riferimento al post originale.
Posso sperare in un’esperienza migliore senza apportare miglioramenti all’importer? Cioè, sto solo facendo qualcosa di sbagliato?
Non ho ancora capito l’ultimo problema, ma ecco un’altra domanda.
Noto che dopo che l’importazione è terminata e avvii il container dell’app, il mio server phpBB ancora esistente viene messo a dura prova. Penso che ciò accada durante la fase di post-elaborazione di sidekiq.
phpBB esiste ancora su www.example.com e Discourse è su dc.example.com.
Sto cercando di capire cosa sta succedendo realmente, quali impostazioni abbiano senso durante questa migrazione di test e quali impostazioni avranno senso per la migrazione finale. E se ho bisogno di avere phpBB in esecuzione per quella post-elaborazione di sidekiq. Chiedo perché non ho idea di cosa succeda nella post-elaborazione.
Alcune impostazioni potenzialmente rilevanti nel mio attuale settings.yml:
import:
# Imposta questo se importi più forum phpBB in un unico forum Discourse.
site_name:
site_prefix:
# questo è necessario per riscrivere i link interni nei post
original: example.com # senza http(s)://
new: https://dc.example.com # con http:// o https://
Se c’è altro che devo controllare, fammelo sapere.
Un’altra cosa che non mi è chiara è il sottodominio www. Attualmente reindirizzo a www con nginx per phpBB. Quindi nell’esempio sopra, ha importanza se metto original: example.com o original: www.example.com? Domanda simile per new quando farò la migrazione finale. I miei utenti accederanno effettivamente a Discourse da www.example.com, ma non so quale sia la best practice.
C’è davvero qualcosa che non va nell’analisi delle citazioni.
Ho appena provato a importare una versione di phpBB 3.2.8 appena installata (installata su mariadb)
L’attribuzione della citazione non funziona: il campo username è vuoto nelle citazioni importate, ma tutto il resto è corretto.
screenshot di discourse del post importato:
sono piuttosto esigente riguardo alla migrazione del mio forum, quindi continuo a migliorare l’importer. non sono sicuro se mi preoccuperò di creare PR poiché l’importer è deprecato e alcune delle mie correzioni sono semi-specifiche per il mio forum, ma questo branch conterrà tutte le mie correzioni combinate nel caso fosse utile a qualcuno:
ho corretto il problema delle citazioni, aggiunto il supporto per alcuni bbcode comunemente aggiunti, reso meno errata l’analisi dei link di youtube e aggiunto il supporto per l’estensione mentions/simplementions. ho ancora altro da migliorare, come aggiungere il supporto per prefissi di siti multipli (il caso d’uso principale è quando hai link sul tuo forum a example.com e www.example.com).
anche se sto supportando alcune cose non standard, non dovrebbe essere un problema eseguirlo su un forum phpBB standard senza estensioni. in ogni caso, consiglio di usare il mio.
il modo più semplice per usarlo è clonare il mio branch da qualche parte e sovrascrivere la directory dello script di importazione all’interno del container con un bind mount.
cioè, clona le mie modifiche da qualche parte:
git clone --filter=blob:none --no-checkout https://github.com/ftc2/discourse.git discourse_dev
cd discourse_dev
git sparse-checkout set --cone
git switch phpbb_import
git sparse-checkout set script/import_scripts
quindi aggiungi questo alla configurazione del tuo container import.yml:
quindi ricompila il container di importazione. dopo aver ricompilato, probabilmente vorrai fare un reset di dove hai clonato il mio repository perché il processo di build sovrascriverà i miei file, lol.
cd /path/to/discourse_dev
git reset --hard HEAD
chown -R 1000:1000 .