2009-07-22 7 views
2

J'ai un ancien site drupal que j'aimerais mettre à niveau, mais je dois déplacer tous les fichiers de données du site (comme jpgs, gifs, etc.) de/files vers// sites/default/files. Je voudrais utiliser un script PHP ou juste une commande MySQL pour trouver une instance de/files/* et la changer en/sites/default/files/* (sans endommager la partie * de le nom, bien sûr!).Comment changer une chaîne globalement dans une base de données MySQL

Est-ce assez facile à faire? Des pointeurs sur une fonction que je pourrais utiliser?

Répondre

4

MySQL possède certaines fonctions de remplacement de chaîne intégrées. Que diriez-vous quelque chose comme ça?

UPDATE table SET field = REPLACE(field,'/files/','/sites/default/files/'); 

Il y a other functions vous pouvez utiliser pour les remplacements plus complexes (ie. Des expressions régulières) si vous avez besoin ainsi.

+0

On dirait que cela devrait fonctionner. Je vais essayer ça dans mon environnement de test et voir comment ça se passe! –

+0

Juste utilisé cette valeur (pour quelques tables différentes), et tout fonctionne comme un charme. Merci! –

+0

Pas de problème, content que ça a marché. – zombat

0

Je suis presque sûr que c'est juste un cas de changer le chemin des 'fichiers' dans la configuration de Drupal.

+0

Cela mettrait à jour tous les nouveaux fichiers et modifierait l'utilisation interne des fichiers par Drupal, mais ne mettrait pas à jour tous les nœuds avec des liens/références aux fichiers. –

0

Si vous changez simplement la table de fichiers, vous pouvez faire une mise à jour avec SQL, comme zombat dit. Si vous avez un nombre significatif d'autres instances des chemins (IE - corps de nœuds full HTML et autres), votre meilleur pari serait d'exporter la base de données dans un fichier texte (peut le faire avec mysqldump ou la fonction d'exportation de PHPMyAdmin) Ensuite, il suffit de mettre à jour les chaînes de caractères - soit avec un éditeur de texte approprié, un outil de ligne de commande comme sed ou un groupe de stagiaires.

+0

Ah - ce serait une autre bonne option. Je pourrais le faire pour le prochain site sur lequel je dois travailler! –

Questions connexes