MySQL Заменить символы в каждой таблице и столбце базы данных - PullRequest
0 голосов
/ 24 мая 2009

Я хотел бы заменить строку в каждом столбце и каждой таблице конкретной базы данных. Есть ли способ сделать это ?

Заранее спасибо:)

Edit: Это потому, что я заметил Gibberish в некоторых местах, и мне понадобятся дни, чтобы исправить это один за другим

Ответы [ 3 ]

1 голос
/ 04 января 2011

Нашел ответ из другой ветки:

http://www.anovasolutions.com/content/mysql-search-and-replace-stored-procedure

1 голос
/ 24 мая 2009

Не без программирования.
Самый простой подход - использовать команды show / description на вашем любимом языке и запускать набор результатов (имена столбцов / таблиц) и создавать из него список запросов UPDATE для запуска в вашей БД.

Почему бы вам не написать и не открыть его, вы не первый, кто ищет что-то подобное (или Google, где-то может быть готов сценарий).

0 голосов
/ 17 апреля 2012

Я искал это сам, когда мы сменили домен на нашем сайте Wordpress. Это не может быть сделано без программирования, вот что я сделал.

<?php  
  header("Content-Type: text/plain");

  $host = "localhost";
  $username = "root";
  $password = "";
  $database = "mydatabase";
  $string_to_replace  = 'old.example.com';
  $new_string = 'new.example.com';

  // Connect to database server
  mysql_connect($host, $username, $password);

  // Select database
  mysql_select_db($database);

  // List all tables in database
  $sql = "SHOW TABLES FROM ".$database;
  $tables_result = mysql_query($sql);

  if (!$tables_result) {
    echo "Database error, could not list tables\nMySQL error: " . mysql_error();
    exit;
  }

  echo "In these fields '$string_to_replace' have been replaced with '$new_string'\n\n";
  while ($table = mysql_fetch_row($tables_result)) {
    echo "Table: {$table[0]}\n";
    $fields_result = mysql_query("SHOW COLUMNS FROM ".$table[0]);
    if (!$fields_result) {
      echo 'Could not run query: ' . mysql_error();
      exit;
    }
    if (mysql_num_rows($fields_result) > 0) {
      while ($field = mysql_fetch_assoc($fields_result)) {
        if (stripos($field['Type'], "VARCHAR") !== false || stripos($field['Type'], "TEXT") !== false) {
          echo "  ".$field['Field']."\n";
          $sql = "UPDATE ".$table[0]." SET ".$field['Field']." = replace(".$field['Field'].", '$string_to_replace', '$new_string')";
          mysql_query($sql);
        }
      }
      echo "\n";
    }
  }

  mysql_free_result($tables_result);  
?>

Надеюсь, это поможет любому, кто столкнется с этой проблемой в будущем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...