Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Создание базы данных и наполнение с помощью скрипта

Ответить
Настройки темы
MySQL - [решено] Создание базы данных и наполнение с помощью скрипта

Старожил


Сообщения: 252
Благодарности: 11

Профиль | Отправить PM | Цитировать


Создание базы данных и наполнение с помощью скрипта из консоли mysql

Нужно запустить его из консоли mysql, подскажите если кто-знает.



Код: Выделить весь код
    
mysql>
система , но которой установлен portable msql - это Windows

Может в настройках mysql есть запрет на запуск исполняемых файлов, или явно нужно указывать директорию, откуда можно запускать скрипты ???

mysql-5.7.19

Цитата:
You can also use scripts from the mysql prompt by using the source command or \. command:
Код: Выделить весь код
mysql> source filename;
mysql> \. filename
Искал информацию о пакетном запуске и все рекомендации больше не работатют ( по крайней мере те, что нашел)

Вот простой пример, который создает базу данных.
Скрытый текст
Код: Выделить весь код
create database test; 
use test;
create table payments(num INT,paydate datetime not null default current_timestamp,receiver int not null ) 
desc test; # показать описание структуры таблицы
 
insert into p (num,paydate)
values(2,'2017-10-30 15:00:00');
select * from test;


Какое расширение файла должно быть у сценария?
Можно так ?
'd:\db\myscript.mysql'

Вот что получается

Скрытый текст
Код: Выделить весь код
mysql> source  "d:\t.txt"
ERROR:
Failed to open file '"d:\t.txt"', error: 22
mysql>

Отправлено: 21:09, 26-09-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата maslinaV:
Какое расширение файла должно быть у сценария? »
Расширение тут не при чём. Можете использовать типичное «.sql».

Вы должны использовать полный путь к файлу, который не должен обрамляться кавычками, апострофами и т.п.:
Скрытый текст

С кириллицей в путях не работает (с этим не разбирался, навряд ли сие Вам сейчас понадобится).

Цитата maslinaV:
Вот простой пример, который создает базу данных. »
Для начала попробуйте выполнить содержимое Вашего сценария построчно в командной строке MySQL, внимательно следя за ответами сервера.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:24, 27-09-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 252
Благодарности: 11

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата maslinaV:
Я так понимаю, если в скрипте хоть одна ошибка, тогда в консоль будет выведено только сообщение
Failed to open file '"d:\t.txt"', error: 22,
то есть так синтаксис (при запуске через скрипт) не может контролироваться и остается только догадываться в чем ошибка??? »
Нет, Вы неправильно понимаете. В данном случае ошибка:
Код: Выделить весь код
Failed to open file '"d:\t.txt"', error: 22,
не в скрипте, а в аргументе команды «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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Создание базы данных и наполнение с помощью скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход