일반적으로 phpmyadmin을 사용하여 MySQL 데이터베이스의 텍스트를 바꾸려면 수동 찾기를 사용합니다. 나는 지금 피곤합니다 .phpmyadmin의 전체 테이블에서 텍스트를 찾아 새로운 텍스트로 바꾸는 쿼리를 어떻게 실행할 수 있습니까?
예 : 키워드 찾기 domain.com
,로 교체하십시오 www.domain.com
.
답변
A에 대한 single table
갱신
UPDATE `table_name`
SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text')
부터 multiple tables
–
모든 테이블에서 편집 할 경우, 가장 좋은 방법은 걸릴 것입니다 dump
다음 find/replace
다시 업로드합니다.
답변
내가 찾은 가장 쉬운 방법은 데이터베이스를 텍스트 파일로 덤프하고 sed 명령을 실행하여 교체를 수행 한 다음 데이터베이스를 MySQL로 다시로드하는 것입니다.
아래의 모든 명령은 Linux에서 bash입니다.
데이터베이스를 텍스트 파일로 덤프
mysqldump -u user -p databasename > ./db.sql
sed 명령을 실행하여 대상 문자열 찾기 / 바꾸기
sed -i 's/oldString/newString/g' ./db.sql
데이터베이스를 MySQL로 다시로드
mysql -u user -p databasename < ./db.sql
쉬워요.
답변
이것을 PHP 파일에 넣고 실행하면 원하는 작업을 수행해야합니다.
// Connect to your MySQL database.
$hostname = "localhost";
$username = "db_username";
$password = "db_password";
$database = "db_name";
mysql_connect($hostname, $username, $password);
// The find and replace strings.
$find = "find_this_text";
$replace = "replace_with_this_text";
$loop = mysql_query("
SELECT
concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$find}'', ''{$replace}'');') AS s
FROM
information_schema.columns
WHERE
table_schema = '{$database}'")
or die ('Cant loop through dbfields: ' . mysql_error());
while ($query = mysql_fetch_assoc($loop))
{
mysql_query($query['s']);
}
답변
mysite.com/wordpress 찾기 및 mysite.com/news로 바꾸기와 같은 모든 wordpress 블로그 게시물에서 텍스트를 찾아서 바꾸기 위해 PHPmyadmin에서 SQL 쿼리를 실행합니다.이 예제에서 tj_posts
UPDATE `tj_posts`
SET `post_content` = replace(post_content, 'mysite.com/wordpress', 'mysite.com/news')
답변
다른 옵션은 데이터베이스의 각 열에 대한 명령문을 생성하는 것입니다.
SELECT CONCAT(
'update ', table_name ,
' set ', column_name, ' = replace(', column_name,', ''www.oldDomain.com'', ''www.newDomain.com'');'
) AS statement
FROM information_schema.columns
WHERE table_schema = 'mySchema' AND table_name LIKE 'yourPrefix_%';
그러면 실행할 수있는 업데이트 문 목록이 생성됩니다.
답변
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
예를 들어, John의 모든 발생을 Mark로 바꾸려면 아래에서 사용합니다.
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');