EDIT: я хочу обновить одно поле (post_content) в известной записи (id 4) известной таблицы (wp_posts) в новой базе данных (new_db). Обновление должно происходить из одного поля (post_content) в известной записи (id 5) известной таблицы (wp_posts) в старой базе данных (old_db). Возможно ли это, или что-то подобное слишком атомарно (?) для MySQL?
Привет! При прямом манипулировании базой данных WordPress я видел много примеров, когда люди заменяли URL-адрес таким образом;
mysql> UPDATE wp_db.wp_post SET post_content=REPLACE(post_content, 'http://oldsite', 'http://newsite' ) ;
Однако у меня есть файл дампа.sql с моего старого сайта, который я хочу правильно импортировать. (Я не могу создать файл экспорта XML, уже слишком поздно) Я создал «фиктивные» сообщения в своем новом блоге и импортировал старую базу данных. Теперь я пытаюсь сделать что-то подобное;
UPDATE new_db.new SET post_content = REPLACE(post_content,(SELECT post_content FROM old_db.wp_posts WHERE id = oldpost#) WHERE id = newpost#;
Я понимаю, что мне придется сделать это для post_date, post_title и post_content между old_db.wp_posts и new_db.posts, я просто надеюсь, что это действительно как-то возможно….
Вам также придется обновить wp_postmeta и wp_term_relationships, а также wp_comments и wp_commentmeta, если есть какие-либо комментарии. Посмотрите на codex.wordpress.org/File:WP3.0-ERD.png структуру базы данных. Почему вы не можете импортировать все в пустую установку WP, а затем экспортировать сообщения более логичным способом? Это может быть проще, если вы имеете дело с большим количеством записей для импорта.
Я добавлял новые сообщения в новый блог через QuickPress, так что о wp_postmeta, wp_term_relationships и обо всем, что связано с комментариями, не может быть и речи. У меня всего около 30 постов. Но я пытаюсь разработать способ, который будет масштабироваться до нашего другого блога с 1500 опубликованными постами.
Петр, спасибо за ссылку. Однако скрипт предназначен для замены строк в любой таблице любой базы данных (по умолчанию). Однако мне нравится, как он обрабатывает сериализованные данные (больше информации для меня в Google). Я хочу заменить запись post_content в целом, от old_db.wp_posts(id=1) до new_db.wp_posts(id=5).
Похоже, что попытка поместить «поле X» в db.table.record.fieldY слишком атомарна или требует лучшей волшебной палочки, чем может найти Google. Я пошел вперед и просто вырвал посты оптом и ввел их в новую БД. Вот как я это сделал. Надеюсь, это поможет следующему бедолаге, который окажется в том же месте, что и я…
Как копировать и вставлять сообщения WordPress из старой базы данных в новую.
0) Сначала сделайте резервную копию новой БД.
1) сначала найдите все свои старые опубликованные посты и страницы;
2) Удалите все свои ревизии с помощью ;
3) вставьте свои старые посты и страницы в новую БД
Это возможно, что вы хотите, простым способом. Взгляните на http://spectacu.la/search-and-replace-for-wordpress-databases/ ; который будет выполнять все замены автоматически, сохраняя при этом правильные спецификации длины сериализованных данных. Привет, Питер