<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; Копирование таблиц в одной базе]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=902&amp;type=atom" />
	<updated>2010-09-28T06:44:47Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=902</id>
		<entry>
			<title type="html"><![CDATA[Re: Копирование таблиц в одной базе]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=13419#p13419" />
			<content type="html"><![CDATA[<p>Протестирую и отпишусь чтоб глупые вопросы не задавать <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> .</p>]]></content>
			<author>
				<name><![CDATA[givchik]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2482</uri>
			</author>
			<updated>2010-09-28T06:44:47Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=13419#p13419</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Копирование таблиц в одной базе]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=13416#p13416" />
			<content type="html"><![CDATA[<p><strong>givchik</strong><br />Совершенно верно: код необходимо вставить в поле выполнения SQL запроса и затем вызвать процедуру через CALL. Добавить префиксы можно так:<br /></p><div class="codebox"><pre><code>CALL copy(&#039;&#039;, &#039;new_prefix&#039;);</code></pre></div><p>Процедура может не создаться и вывести ошибку, так что проверьте.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2010-09-28T05:59:18Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=13416#p13416</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Копирование таблиц в одной базе]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=13406#p13406" />
			<content type="html"><![CDATA[<p>А можно таким образом проставить префиксы.<br />И вопрос по коду:<br />код вставить в поле &quot;Выполнить SQL запрос(ы) на БД&quot;,<br />а потом туда же Вызов процедуры....<br />Или я, в силу ограниченности <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> чего-то не понял?</p>]]></content>
			<author>
				<name><![CDATA[givchik]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2482</uri>
			</author>
			<updated>2010-09-27T14:15:13Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=13406#p13406</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Копирование таблиц в одной базе]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=5800#p5800" />
			<content type="html"><![CDATA[<p>Эту процедуру можно запустить на БД для смены префиксов таблиц.<br />Параметры: old_prefix - старый префикс, new_prefix - новый префикс.<br /></p><div class="codebox"><pre><code>DROP PROCEDURE IF EXISTS `copy`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `copy`(IN old_prefix VARCHAR(20), IN new_prefix VARCHAR(20))
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE table_name VARCHAR(40);
  DECLARE new_table_name VARCHAR(40);
  DECLARE table_postfix VARCHAR(40);
  DECLARE cur1 CURSOR FOR SHOW TABLES;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur1;

  REPEAT
    FETCH cur1 INTO table_name;
    SET table_postfix = TRIM(LEADING old_prefix FROM table_name);
    SET new_table_name = CONCAT(new_prefix, table_postfix);
    IF NOT done THEN
      IF table_name LIKE CONCAT(old_prefix, &#039;%&#039;) THEN
        SET @S := CONCAT(&#039;CREATE TABLE `&#039;, new_table_name, &#039;` LIKE `&#039;, table_name, &#039;`;&#039; );
        PREPARE stmt FROM @S;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        SET @S := CONCAT(&#039;INSERT INTO `&#039;, new_table_name, &#039;` SELECT * FROM `&#039;, table_name, &#039;`;&#039;);
        PREPARE stmt FROM @S;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
      END IF;
    END IF;
  UNTIL done END REPEAT;

  CLOSE cur1;

END</code></pre></div><p>Пример вызова процедуры:<br /></p><div class="codebox"><pre><code>CALL copy(&#039;old_prefix&#039;, &#039;new_prefix&#039;);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2008-09-08T00:11:40Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=5800#p5800</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Копирование таблиц в одной базе]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=5794#p5794" />
			<content type="html"><![CDATA[<p>Имеется база base_db, в ней таблицы pre1_tab1, pre1_tab2, pre1_tab3...pre1_tabn. Как скопировать эти таблицы в эту же базу base_db, только с другим префиксом pre2_tab1, pre2_tab2, pre2_tab3...pre2_tabn ? Каждую по очереди я нашел, как скопировать, но это очень долго... А все сразу скопировать, изменив только префикс, есть возможность?</p>]]></content>
			<author>
				<name><![CDATA[dispen]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=1527</uri>
			</author>
			<updated>2008-09-07T15:56:11Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=5794#p5794</id>
		</entry>
</feed>
