Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Данные из одних таблиц в другие / 9 сообщений из 9, страница 1 из 1
21.09.2018, 11:23
    #39706035
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
Имеется БД Mysql в которой имена таблиц заданы как кириллицей, например: "Фамилия_сотрудника", так и латиницей, таблиц порядка 200 шт. И есть другая БД с такими же таблицами, но названия уже только на латинице.

Как мне организовать копирование данных из одной БД в другую, может есть готовый парсер или программуля какая?
Заранее благодарю за ответы.
...
Рейтинг: 0 / 0
21.09.2018, 11:43
    #39706041
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
Выгрузить оба списка имён. Составить таблицу соответствия. Написать процедуру, которая берёт имена попарно и копирует данные.
...
Рейтинг: 0 / 0
21.09.2018, 13:58
    #39706105
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
ну в принципе да, спасибо, попробую реализовать
...
Рейтинг: 0 / 0
21.09.2018, 16:13
    #39706214
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
Я вот думаю может проще выгрузить dump и уже в sql файле заменять названия таблиц.....только вот чем это сделать, что бы списком заменяло
...
Рейтинг: 0 / 0
21.09.2018, 16:22
    #39706219
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
А не.... так не пойдет..... в таблицах информация в которой также встречаются слова которые совпадают с названиями страниц
...
Рейтинг: 0 / 0
24.09.2018, 10:19
    #39706810
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
Born,

Ну не совсем не пойдет. Всё же, ключевые строки для замены имен таблиц обычно начинаются с "INSERT INTO". За этот фрагмент вполне можно зацепиться.
...
Рейтинг: 0 / 0
24.09.2018, 13:48
    #39706984
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
Начал делать вот так:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
<?php

$bdProd = 'u2';
$bdSource = 'u1';

$connProd = new mysqli('localhost', 'root', 'root', $bdProd);
$connSource = new mysqli('localhost', 'root', 'root', $bdSource);

if ($connProd->connect_error){
    die ('Ошибка: не удается подключиться:'.$connProd->connect_error);
}

else{
    echo 'Соединение установлено! - '.$bdProd.'<br/><br/>';
}

if ($connSource->connect_error){
    die ('Ошибка: не удается подключиться:'.$connSource->connect_error);
}

else{
    echo 'Соединение установлено! - '.$bdSource.'<br/><br/>';
}




if (is_file('table.txt')){
    echo 'Всё ОК!<br/> Файл table.txt обнаружен!<br/>';
    $fileSource = file('table.txt');
$i=0;
    foreach ($fileSource as $str){
            $arTable[$i][]=explode('|',$str);
            $i++;
        }

/*    foreach ($arTable)*/

    echo '<pre>';
/*var_dump($arTable);*/
    echo '</pre>';
}
else{
    echo 'Ошибка! Файл table.txt не существует!';
}

foreach ($arTable as $arrVal){                      /*Удаляем таблицы с названиями в кириллице*/
    foreach($arrVal as $valStr){
        $valTblNameSource = $valStr[0];
        $valTblNameProd = $valStr[1];

        $qDrop = 'DROP TABLE `'.$valTblNameSource.'`';

/*        echo $q.'<br/>';*/
        $result = $connProd->query($qDrop);
        if ($result){
/*            echo 'таблица - '.$valTblNameSource.' удалена <br/>';*/
        }
        else{
            /*echo '<p style=color:red;">Ошибка'.mysqli_error($connSource).'</p><br/>';*/
        }
    }
}



У меня есть файл соответствия таблиц txt-шный который я закидываю в массив и после чего удаляю из БД-2 названия таблиц, которые написаны кириллицей.

Далее мне необходимо в БД-2 скопировать таблицы из БД-1, но уже с новыми названиями. Хочу сделать вот так:
Код: sql
1.
2.
3.
4.
CREATE TABLE table2 LIKE db1.table1;

INSERT INTO table2  
    SELECT * FROM db1.table1; 



Но БД у меня в разных подключениях ($connProd и $connSource) и когда я запускаю запрос под БД-2 естественно он не видит таблиц в БД-1 и выдает ошибку. Помогите плз.
...
Рейтинг: 0 / 0
24.09.2018, 13:50
    #39706987
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
Предполагалось вообще-то, что всё это будет делаться хранимой процедурой на сервере, а не каким-то ПХП-кодом.
...
Рейтинг: 0 / 0
24.09.2018, 13:54
    #39706995
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из одних таблиц в другие
sql процедурой?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Данные из одних таблиц в другие / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]