|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Создание базы данных и наполнение с помощью скрипта |
|
MySQL - [решено] Создание базы данных и наполнение с помощью скрипта
|
Старожил Сообщения: 252 |
Профиль | Отправить PM | Цитировать Создание базы данных и наполнение с помощью скрипта из консоли mysql Нужно запустить его из консоли mysql, подскажите если кто-знает. система , но которой установлен portable msql - это Windows Может в настройках mysql есть запрет на запуск исполняемых файлов, или явно нужно указывать директорию, откуда можно запускать скрипты ??? mysql-5.7.19 Цитата:
Вот простой пример, который создает базу данных. Скрытый текст
Какое расширение файла должно быть у сценария? Можно так ? 'd:\db\myscript.mysql' Вот что получается |
||
Отправлено: 21:09, 26-09-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата maslinaV:
Вы должны использовать полный путь к файлу, который не должен обрамляться кавычками, апострофами и т.п.: Скрытый текст
С кириллицей в путях не работает (с этим не разбирался, навряд ли сие Вам сейчас понадобится). Цитата maslinaV:
|
||
Отправлено: 05:24, 27-09-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 252
|
Профиль | Отправить PM | Цитировать Вот пример, который нужно было запустить.
Скрытый текст
create database sale2; # создание базы данных - продажи use sale2; # указываем базу данных , для добавления в нее данных и изменения # создаем таблицу платежей /*первое поле `num` - это порядковый номер платежа, оно должно быть уникальным, не должно быть пустым; `2`-е поле paydate - дата продажи, не должна быть пустой, обязательна к заполению, по умолчанию подставляется текущая дата и время, которое берется из системных значений компьютера, на котором работает данная база данных; поле receiver - получатель платежа, не должно иметь пустого значения; поле amount - здесь вводится сумма платежа, поле не должно быть пустым, оно имеет в сумме `10` разрядов,из них: `2`-разряда после запятой, `8`-разрядов цифр перед запятой разрядов"*/ create table payments(num INT not null, paydate datetime not null default current_timestamp, receiver int not null, amount decimal(10,2) not null, primary key(num), unique(num) ); # смотрим описание таблицы desc payments; # наполняем таблицу insert into payments (num,paydate,receiver,amount) values(1,'2016-10-30 15:00:00',1,35000.5), (2,'2017-11-30 15:25:00',2,25000.5), (3,'2015-11-30 10:25:00',2,15000.5), (4,'2014-11-30 11:25:00',3,10000.5), (5,'2014-11-30 11:25:00',3,10000.5); # используем, при заполнении таблицы, значение по умолчанию для поля paydate # поэтому это поле и значения для него опустим из параметров insert into payments (num,receiver,amount) values(6,4,1000.5), (7,2,500.5), (8,3,17000.5), (9,1,100.5), (10,4,15000.5); # производим выборку всех данных из таблицы payments select * from payments; # создаем таблицу получателей /*первое поле num - это порядковый номер получателя, оно должно быть уникальным, не должно быть пустым; `name` - так как это слово зарезервировано, обозначим его обратными кавычками, обозначим максимальный размер хранимой строки, Указание правильного размера поля таблицы, может значительно сэкономить занимаемую ею память. `VARCHAR` - это тип данных - строковые данные переменной длины,сделаем данное поле индексируемым и уникальным и назначим данному полю первичный ключ; */ create table receivers( num INT not null, `name` Varchar(255) not null, PRIMARY KEY(`name`), INDEX (`name`), UNIQUE (name)); # смотрим описание таблицы desc receivers; # наполняем таблицу receivers insert into receivers (num,`name`) values(1,'ВЭБ'), (2,'АБСОЛЮТ'), (3,'ФОНД СОРЕСА'), (4,'ВАЛЮТНЫЙ РЕЗЕРВНЫЙ ФОНД'); # производим выборку всех данных из таблицы receivers select * from receivers; А вот результат Скрытый текст
mysql> source d:\DB\tmp\create_db.sql Query OK, 1 row affected (0.01 sec) Database changed Query OK, 0 rows affected (0.06 sec) +----------+---------------+------+-----+------------------ | Field | Type | Null | Key | Default +----------+---------------+------+-----+------------------ | num | int(11) | NO | PRI | NULL | paydate | datetime | NO | | CURRENT_TIMESTAMP | receiver | int(11) | NO | | NULL | amount | decimal(10,2) | NO | | NULL +----------+---------------+------+-----+------------------ 4 rows in set (0.00 sec) Query OK, 5 rows affected (0.02 sec) Records: 5 Duplicates: 0 Warnings: 0 Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0 +-----+---------------------+----------+----------+ | num | paydate | receiver | amount | +-----+---------------------+----------+----------+ | 1 | 2016-10-30 15:00:00 | 1 | 35000.50 | | 2 | 2017-11-30 15:25:00 | 2 | 25000.50 | | 3 | 2015-11-30 10:25:00 | 2 | 15000.50 | | 4 | 2014-11-30 11:25:00 | 3 | 10000.50 | | 5 | 2014-11-30 11:25:00 | 3 | 10000.50 | | 6 | 2017-09-27 17:55:37 | 4 | 1000.50 | | 7 | 2017-09-27 17:55:37 | 2 | 500.50 | | 8 | 2017-09-27 17:55:37 | 3 | 17000.50 | | 9 | 2017-09-27 17:55:37 | 1 | 100.50 | | 10 | 2017-09-27 17:55:37 | 4 | 15000.50 | +-----+---------------------+----------+----------+ 10 rows in set (0.00 sec) Query OK, 0 rows affected (0.06 sec) +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | num | int(11) | NO | | NULL | | | name | varchar(255) | NO | PRI | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 +-----+----------------------------------------------+ | num | name | +-----+----------------------------------------------+ | 2 | АБСОЛЮТ | | 4 | ВАЛЮТНЫЙ РЕЗЕРВНЫЙ ФОНД | | 1 | ВЭБ | | 3 | ФОНД СОРЕСА | +-----+----------------------------------------------+ 4 rows in set (0.00 sec) mysql> Спасибо. Все работает. Я так понимаю, если в скрипте хоть одна ошибка, тогда в консоль будет выведено только сообщение Failed to open file '"d:\t.txt"', error: 22, то есть так синтаксис (при запуске через скрипт) не может контролироваться и остается только догадываться в чем ошибка??? |
Отправлено: 17:59, 27-09-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата maslinaV:
не в скрипте, а в аргументе команды «source». В случае же ошибки в тексте самого скрипта Вы увидите другое сообщение об ошибке. Например, имеем такой вот скрипт: C:\My projects\Some Script.sql
SELECT * FROM myschema.sometable;
bla-bla-bla; SELECT * FROM myschema.sometable; Исполняем его, и видим: Скрытый текст
Конечно, что ошибка помечается строкой 1 не есть хорошо и правильно, но тут я не знаю, можно ли как-то изменить такое поведение, я не занимался MySQL. |
|
Отправлено: 18:53, 27-09-2017 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Создание базы данных безопасности(secedit /import) | victoreva1993 | Скриптовые языки администрирования Windows | 0 | 02-03-2015 21:40 | |
Разное - [решено] создание базы данных | wulf82 | Программирование и базы данных | 7 | 14-12-2012 09:14 | |
Прочие - Создание bat файла для резерного копирования данных с помощью акрониса | Beren | Программное обеспечение Windows | 0 | 02-10-2012 10:35 | |
Разное - Создание общей базы данных для многих клиентов(с++ программы) | crashtuak | Программирование и базы данных | 2 | 27-04-2011 16:27 | |
Создание базы данных на с++builder | Galosh | Программирование и базы данных | 2 | 27-06-2003 15:47 |
|