9 июня 2010, 10:18 более месяца назад
Сравнение таблиц в двух БД (и больше)
Когда дохера работы, начинаешь страдать такой ерундой :)Раз в несколько месяцев приходится сравнивать БД, и каждый раз в ручную. Один даже раз софт сутки искал, но он ужасен, весь. Немного пострадав, минут 30, получился такой код:
- собираем всё в масcив;
- выводим всё красиво в табличках;
- подключаем jQ и делаем удобную «обёрточку»;
- …
- Profit
$user = "root"; $userp = ""; mysql_connect("localhost", $user, $userp) or die(mysql_error()); $table2compare = array("test1", "test2"); $comparedtables = array(); $i = 0; foreach ($table2compare as $tablename){ $comparedtables["title"][$i] = $tablename; $db = mysql_query("SHOW TABLES IN $tablename"); while($dbt = mysql_fetch_array( $db )){ $table = mysql_query("SHOW COLUMNS FROM $dbt[0] FROM $tablename "); while($tbf = mysql_fetch_array( $table )) $comparedtables["tables"][$dbt[0]][$i][] = $tbf; } $i++; } echo "<table><tr>"; for ($j = 0; $j < $i; $j++) echo "<td>".$comparedtables["title"][$j]."</td>"; echo "</tr>"; foreach ($comparedtables["tables"] as $table => $fields) { echo "<tr>"; for ($j = 0; $j < $i; $j++) { if ($j > 0) $eq = $fields[$j] == $fields[0]; else $eq = true; echo "<td valign='top' ".(!$eq ? "style='background: #fcc;'" : "").">"; if (empty($fields[$j])) continue; echo "<span>$table</span><br><table rules=all frame=box cellpadding='2'> <tr> <td>Field</td> <td>Type</td> <td>Null</td> <td>Key</td> <td>Default</td> <td>Extra</td> </tr>"; foreach ($fields[$j] as $field) echo "<tr> <td>$field[0]</td> <td>$field[1]</td> <td>$field[2]</td> <td>$field[3]</td> <td>$field[4]</td> <td>$field[5]</td> </tr>"; echo "</table></td>"; } echo "</tr>"; } echo "</table>"; mysql_close(); <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){ $("table table").hide(); $("table span").click(function(){ $(this).next().next().toggle(); }).css({"cursor":"pointer"}); }); </script>
13 декабря 2009, 14:03 более 7-и месяцев назад
Утилит полезных пост 2
Сегодня речь пойдёт о утилитах для Мускула (MySQL).
Первая это php-утилита Sypex Dumper — универсальный дампер БД (сделан нашими ребятами)
Первая это php-утилита Sypex Dumper — универсальный дампер БД (сделан нашими ребятами)
- можно просто и быстро создать резервную копию (бэкап, дамп)
- работает очень быстро с огромными БД
- есть куча фич (свой cmd, cron)
- очень простая и удобная
- установка — просто залил на сервер
- сохранение/загрузка результатов
- експорт в SQL и XML
- в демке всё круто видно %)
11 декабря 2009, 13:13 более 7-и месяцев назад
Утилит полезных пост
Первая это php-утилита Admiter
- php MySQL Admin одним файлом, всегда мечтал ;)
- умеет всё что нужно, но не такой мощный как PhpMyAdmin
- она от автора супер PNG-fix для ИЕ6
- css-selectors для выбора применяемых элементов
- работает очень быстро и просто, одни бонусы :)
- умеет за одно делать прозрачными png-рисунки
2 августа 2009, 15:42 более 12-и месяцев назад
MySQL convert All tables (encoding, alter)
Иногда нужно поменять кодировку БД (появился новый язык, и нужен утф8 срочно, или поменялась ЦМС, или власть сменилась).
Хм, у нас для этого есть стандартные команды:
Не смешно :( но выход есть, всё теми же стандартными фишками ;)
ЗЫ: все таблички то в нужной кодировочке, а база то нет ;) не забываем
Хм, у нас для этого есть стандартные команды:
ALTER TABLE sometable CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci; ALTER TABLE sometable DEFAULT CHARACTER SET cp1251; # another way ALTER TABLE articles CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci ALTER TABLE articles DEFAULT CHARACTER SET utf8Казалось бы, всё просто ;) Но а если таблиц 100, 200, 300 о_О это что по одной колбасить? :D
Не смешно :( но выход есть, всё теми же стандартными фишками ;)
# мы возьмём и используем ИнфоСхему ;) use information_schema; # Запихаем все таблички базы someDB в МЕМ select TABLE_SCHEMA, TABLE_NAME from TABLES where TABLE_SCHEMA = "someDB"; # Нарисуем команды select CONCAT("Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci; Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` DEFAULT CHARACTER SET cp1251;") as MySQLCMD from TABLES where TABLE_SCHEMA = "someDB"; # Думаете всё? Магия произошла? нееет! # Теперь смотрим в аутпут, копируем все команды, # и выполняем огромный запрос. # Для удобства советую phpMyAdmin
ЗЫ: все таблички то в нужной кодировочке, а база то нет ;) не забываем
ALTER DATABASE `someDB` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
28 июля 2009, 20:23 более года назад
MySQL и NULL (заблуждения)
В мускуле сравнить с NULL(равно) или отрицать от NULL(неравно), нельзя, вернее бесполезно ;) Можно только сопоставить с помощью IS или IS NOT, тогда мы получим результат ;)
То есть так не работает
То есть так не работает
SELECT * FROM table WHERE column = NULL; SELECT * FROM table WHERE column != NULL;А вот так работает
SELECT * FROM table WHERE column IS NULL; SELECT * FROM table WHERE column IS NOT NULL;
26 мая 2008, 15:24 более 2-х лет назад
«cp1251 vs Mysql» и знаки вопроса (windows-1251)
после коннекта нужно вставить магические строчки :)
что это даст?:
* первые 2 строчки будут считывать с базы не «????», а нормальный текст;
* следующие строчки дадут возможность записывать в базу текст в правильной кодировке, а не «????» :)
@mysql_query("SET NAMES cp1251"); @mysql_query("SET CHARACTER SET cp1251"); @mysql_query("SET character_set_client = cp1251"); @mysql_query("SET character_set_connection = cp1251"); @mysql_query("SET character_set_results = cp1251");
что это даст?:
* первые 2 строчки будут считывать с базы не «????», а нормальный текст;
* следующие строчки дадут возможность записывать в базу текст в правильной кодировке, а не «????» :)
26 мая 2008, 15:17 более 2-х лет назад
Книги по програмингу (старенькие, запыленные)
Книги по MySQL
Структуризированный язык запросов (SQL)
Системы обработки информации — язык баз данных SQL
MySQL и mSQL
Введение в SQL
Введение в реляционные базы данныx
ОСНОВЫ ПРОЕКТИРОВАНИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ
Версия пакета MySQL : 3.20.29
Мартин Грубер: Понимание SQL
Книги по CGI
Системы обработки информации — язык баз данных SQL
MySQL и mSQL
Введение в SQL
Введение в реляционные базы данныx
ОСНОВЫ ПРОЕКТИРОВАНИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ
Версия пакета MySQL : 3.20.29
Мартин Грубер: Понимание SQL
CGI Developer’s Guide
CGI Programming Unleashed
CGI reference
CGI — Общий Интерфейс Шлюзов
Oписание CGI
CGI.pm — a Perl5 CGI Library
Книги по HTML
CGI Programming Unleashed
CGI reference
CGI — Общий Интерфейс Шлюзов
Oписание CGI
CGI.pm — a Perl5 CGI Library
HTML учёбник
Изучение HTML 3.2 на примерах
HTML-справочник
Практическое руководство по HTML
Словарь тагов
Руководство по стилям для создания online гипертекста
Clean up your Web pages with HTML TIDY
Книги по CSS
Книги по JS
Изучение HTML 3.2 на примерах
HTML-справочник
Практическое руководство по HTML
Словарь тагов
Руководство по стилям для создания online гипертекста
Clean up your Web pages with HTML TIDY
Центром Информационных Технологий: JavaScript
Практическое введение в программирование на JavaScript
ВВЕДЕНИЕ В JAVASCRIPT
JavaScript Bible 4th Edition
JS object model
Руководство по JavaScript
JavaScript: Краткое введение и справочникПримеры!
Книги по PHP
Практическое введение в программирование на JavaScript
ВВЕДЕНИЕ В JAVASCRIPT
JavaScript Bible 4th Edition
JS object model
Руководство по JavaScript
JavaScript: Краткое введение и справочникПримеры!