SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.11.2011 18:26:35

malor
Завсегдатай
Зарегистрирован: 24.05.2007
Сообщений: 49

Как создать базу и таблицы заполнить -только в случае если этого еще нет.

Допустим. вы переустанавливаете MySQL-сервер. В прошлом у вас была какая-то БД. Поставив MySQL заново, при условии что в конфиге одно и тоже значение у переменной datadir, вы получите доступ к своей прежней БД.
Возьмем случай, что вы не в курсе, была ли сохранена база (имя - "mybase") или нет.

1) Вы запускаете:
"%PROGRAMFILES%\MySQL\MySQL Server 5.5\bin\mysql" -uroot -p123456 -e "CREATE DATABASE IF NOT EXISTS mybase"
Безопасная команда, как видим.

2) Затем заносите в нее данные:
"%PROGRAMFILES%\MySQL\MySQL Server 5.5\bin\mysql" -uroot -p123456 mybase < myolddump.txt

Файл myolddump.txt имеет такое содержимое:

DROP TABLE IF EXISTS `my_main_table`;
CREATE TABLE `my_main_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `item` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;


--
-- Dumping data for table `my_main_table`
--

LOCK TABLES `my_main_table` WRITE;
INSERT INTO `my_main_table` VALUES (1,'строка1'),(2,'строка2'),(3,'строка3'),(4,'строка4'),(5,'строка5');
UNLOCK TABLES;
 


Вместо :

DROP TABLE IF EXISTS `my_main_table`;
CREATE TABLE `my_main_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `item` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;


вероятно нужно написать:

CREATE TABLE IF NOT EXISTS `my_main_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `item` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;


А еа что заменить участок

LOCK TABLES `my_main_table` WRITE;
INSERT INTO `my_main_table` VALUES (1,'строка1'),(2,'строка2'),(3,'строка3'),(4,'строка4'),(5,'строка5');
UNLOCK TABLES;
 

?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson