데이터베이스 내의 모든 문자열 인스턴스를 검색 및 치환하려면 어떻게 해야 합니까?
워드프레스 설치(서버 이름)에 포함된 문자열이 여러 열, 레코드 및 테이블에 걸쳐 수천 번 포함되어 있습니다.
다른 서버의 위치로 업데이트하고 싶습니다. 콘텐츠를 옮기고 있습니다.
소스는 http://my-server1/some/link/to/something 이며 http://my-other-server/some/link/to/something 이 됩니다.기본적으로 http://my-server1의 모든 인스턴스에 대해 이 프로세스를 반복하려고 합니다.
MySQL에서 쉽게 할 수 있는 방법이 있나요?도구?아니면 슬프게도 모든 레코드를 업데이트해야 하나요?
감사해요.
대략적인(그러나 효과적인) 방법은 스키마를 파일에 덤프하고 검색 및 치환한 후 다시 가져오는 것입니다.
사실 오늘 그걸 했어요:)
구글 검색에서 이걸 발견했지만, 몇몇 사람들에게 도움이 될 수도 있어요.테이블과 컬럼을 알고 있는 경우(phpMyAdmin의 와일드카드 검색을 사용하여 찾을 수 있습니다),
UPDATE table_name SET column_name = REPLACE(column_name, 'http://oldsite.com',http://newsite.com');
굵은 부품을 자신의 부품으로 교체합니다.
대규모 데이터베이스가 있는 경우 이를 각 테이블과 열을 루프할 수 있는 스크립트에 적용할 수 있습니다.
전체 데이터베이스를 다시 가져오려면 MySQL 덤프 방법을 사용하는 것이 가장 좋습니다.WordPress 코어 설치는 실제로 11개의 테이블로 구성되며, 그 중 컨텐츠 열은 거의 없으므로 열로 교체하는 것도 마찬가지로 쉽습니다.링크 또는 문자열을 참조하는 플러그인 테이블이 로드되지 않은 경우 SQL이 됩니다.
UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_comments SET comment_content = REPLACE(comment_content,'xcurrentx','xreplacementx');
UPDATE wp_links SET link_description = REPLACE(link_description,'xcurrentx','xreplacementx');
UPDATE wp_options SET option_value = REPLACE(option_value,'xcurrentx','xreplacementx');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_content = REPLACE(post_content,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_title = REPLACE(post_title,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt,'xcurrentx','xreplacementx');
UPDATE wp_term_taxonomy SET description = REPLACE(description,'xcurrentx','xreplacementx');
UPDATE wp_usermeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
당신의 질문은 2009년에 게시되었고, 그 해 동안 다른 사람이 특정 데이터베이스의 모든 테이블에서 문자열을 검색하기 위한 기본 php 도구를 개발했습니다.임의로 모든 항목을 다른 문자열로 바꿀 수도 있습니다.
5년이 지난 후에도 Wordpress 설치에 대해 이 도구를 사용하는 것이 mysql 덤프를 사용하는 것보다 효과적이고 훨씬 쉽다고 생각합니다(단, 스크립트를 백업용으로 실행하기 전에 덤프를 작성하는 것이 좋습니다).
자세한 내용은 Eric Amundson의 블로그 및 MySQL Search & Replace 프로젝트의 Launchpad 페이지를 참조하십시오.
저는 당신이 지금까지 답을 찾고 있다고는 생각하지 않지만, 이 문제에 대한 해결책을 찾고 있는 다른 누군가가 앞으로 여기에 불쑥 찾아오는 데 도움이 되기를 바라며 힌트도 올리기로 했습니다.
Brad Larson의 답변에 덧붙여서 다음과 같은 변수를 설정합니다.
SET @what_to_be_replaced = "what_to_be_replaced", @to_be_replaced_by = "to_be_replaced_by";
다음으로 다음과 같이 사용합니다.
UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value, @what_to_be_replaced, @to_be_replaced_by );
또한 Search Regex라고 불리는 워드프레스 플러그인이 있으며, 이 플러그인은 다음을 실행할 수 있습니다.grep데이터베이스 전체에서 검색 및 치환합니다.
MySQL의 REPLACE를 사용하거나 WordPress의 sql 파일이나 db에서 수동으로 문자열을 교체하는 것은 좋지 않습니다.WordPress는 직렬화된 필드를 사용합니다. 이 필드는 문자열을 바꾸면 끊어질 수 있습니다(이 경우).
나에게 딱 맞는 Better Search Replace 플러그인을 사용했습니다.
최근 워드프레스 이행으로 사이트의 도메인 이름을 변경해야 했습니다(포스트 데이터 등에서 사이트 이름이 1012건 발생).mysqldump 메서드를 사용하여 이전 도메인 이름을 새 도메인 이름으로 대체했습니다.이는 재 Import 후 워드프레스 레코드에 있는 직렬 어레이 데이터(새 도메인 이름이 이전 도메인 이름보다 2자 짧음) 때문에 크게 실패했습니다.wp-cli는 관리 태스크용 워드프레스 명령줄 인터페이스로, 직렬화된 레코드도 처리하는 데이터베이스 문자열에 대한 검색 치환 기능이 내장되어 있습니다.wp-config.php에 저장된 credential을 사용하기 때문에 워드프레스 데이터베이스를 직접 대상으로 합니다(mariadb 인스턴스가 다른 데이터베이스도 호스트하는 경우).경로의 폴더에 다운로드하여 저장하는 단일 php 파일입니다.https://wp-cli.org/ 를 참조해 주세요.
언급URL : https://stackoverflow.com/questions/836083/how-to-search-and-replace-all-instances-of-a-string-within-a-database
'programing' 카테고리의 다른 글
| React Native Flat List의 List Header Component를 스틱으로 만들려면 어떻게 해야 합니까? (0) | 2023.03.28 |
|---|---|
| AngularJS에서 지시 스타일을 조작하는 방법은 무엇입니까? (0) | 2023.03.28 |
| jq를 사용하여 키 이름을 다른 이름으로 바꾸려면 어떻게 해야 합니까? (0) | 2023.03.28 |
| 프로젝터와 카르마를 함께 사용할 수 있습니까? (0) | 2023.03.28 |
| React/Redux/Typescript 알림 메시지에서 컴포넌트를 자체에서 마운트 해제, 렌더 해제 또는 삭제하는 방법 (0) | 2023.03.28 |