当前位置:首页 » 编程软件 » mysql脚本执行

mysql脚本执行

发布时间: 2022-01-09 17:27:43

❶ 怎么写一个Mysql自动执行脚本

呵呵~前几天刚搞好这个...
分两个BAT(1.bat,2.bat)~~当然可以连起来~BAT路径自己修改
1.bat内容以下

D:\wamp\bin\mysql\mysql5.5.8\bin\mysql -uroot -p < D:\wamp\www\mysqlCreatDB.sql
2.bat

mysqlCreatDB.sql内容为:create database “自己数据库名字”

2.bat内容以下

@ECHO off
set user=root
set pass=
set wdb=gx
set port=3306
set server=localhost

@ECHO 正在安装数据库....
D:\wamp\bin\mysql\mysql5.5.8\bin\mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% < D:\wamp\www\自己导出的SQL文件
@ECHO 安装完毕

❷ mysql是用的.sh写的脚本,执行后提示没有命令

在Shell中执行mysql的脚本,这里介绍比较容易使用的一种方法
首先写好sql的脚本,后缀为.sql,比如
sql_file.sql:内容如下
#这是SQL的脚本
create table if not exists test_sql(id int(10),name varchar(20));
insert into test_sql values(1,'正餐');
select * from test_sql;

很简单的创建、插入、查询
之后shell的脚本,内容如下
#!/bin/bash #这是执行SQL的脚本,传入数据库表,和SQL文件名即可
name=$1
file_name=$2
cd /opt/lampp/bin ./mysql -uroot -p123456 <<EOF
use ${name};
source ${file_name};
EOF

./mysql -uroot -p123456是进入mysql的命令,前面的路径可以改成自己的绝对路径
<< EOF EOF 中间可以写出任意的mysql脚本
其中,如果要执行某个.sql的命令,直接用 source 脚本.sql 即可执行该脚本上面的命令,这里使用的是source sql_file.sql
此外,如果在mysql中需要执行shell脚本
可以在EOF中 ./mysql -uroot -p123456<<EOF \! sh shell.sh EOF
前面加上 !\ +linux中执行的shell命令即可

❸ 如何查看mysql运行脚本文件

sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件。基本步骤如下:
1、创建包含sql命令的sql脚本文件
文件中包含一些列的sql语句,每条语句最后以;结尾,文件内容示例如下:
--创建表,使用“--”进行注释
create table 表名称
(
Guid Varchar(38) not null primary key,
Title Varchar(255),

❹ 如何执行一个mysql的sql脚本文件

基本步骤如下:
一、创建包含sql命令的sql脚本文件
文件中包含一系列的sql语句,每条语句最后以;结尾,假设文件名为ss.sql,文件内容示例如下(使用“--”进行注释):--创建表create table 表名称(Guid Varchar(38) not null primary key,
Title Varchar(255),
) TYPE=InnoDB;--在表A中增加字段Status
alter table A add Status TinyInt default '0';--在表A上创建索引
create index XX_TaskId_1 on A(Id_);
--在A表中添加一条记录
Insert into A (Id,ParentId, Name) values(1,0,'名称');
--添加、修改、删除数据后,有可能需要提交事务
Commit;二、执行sql脚本文件方法一 使用cmd命令执行(以windows为例,unix或linux的在其类似的控制台下运行)
格式:【Mysql的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】
示例:D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql注意事项:1、如果在sql脚本文件中使用了use 数据库,则-D数据库选项可以忽略
2、如果【Mysql的bin目录】中包含空格,则需要使用“”包含,如:
“C:\Program Files\mysql\bin\mysql” –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】
3、如果需要将执行结果输出到文件,可以采用以下模式
D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql>d:\dd.txt
方法二 进入mysql的控制台后,使用source命令执行
1、进入mysql控制台
D:\mysql\bin\mysql –uroot –p123456 -Dtest
2、执行sql脚本文件

❺ 进入mysql控制台后执行sql脚本的方法

使用source命令执行sql脚本。
进入mysql的控制台后,使用source命令执行
Mysql>source
【sql脚本文件的路径全名】
具体步骤:
假设运行sql脚本是hello.sql,在控制台下输入:
mysql>source
c:\hello
world\hello.sql(注意路径不用加引号)
或者
\.
c:\hello
world\hello.sql
然后回车即可

❻ mysql命令行工具如何执行脚本文件

mysql
-u
root
-p
#输入root密码
如果这个SQL里有
create
database
member;
这句,那么直接执行下面的语句,如果没有,那么你需要先
create
database
member;
use
member;
再执行下面的语句
source
/xxx/create_db_member.sql

❼ mysql如何执行sql脚本文件

mysql
–u用户名–p密码
–D数据库<【sql脚本文件路径全名】,示例:mysql
–uroot
–p11111
-Dtest注意:A、如果在sql脚本文件中使用了use
数据库,则-D数据库选项可以忽略B、如果【Mysql的bin目录】中包含空格,则需要使用“”包含,如:“C:\Program
Files\mysql\bin\mysql”
–u用户名
–p密码–D数据库<【sql脚本文件路径全名】方法二
进入mysql的控制台后mysql>source
sql脚本路径

❽ linux shell脚本执行mysql mysql数据库在远程服务器上

方法一、适合所有格式的mysql数据库,通过对数据库导出导进写个脚本定时执行:
1.导出整个数据库 mysqlmp -u 用户名 -p 数据库名 > 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路径/wcnc.sql
2.导出一个表 mysqlmp -u 用户名 -p 数据库名 表名> 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路径/wcnc_users.sql
3.导出一个数据库结构 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路径/wcnc_db.sql
定义:
-d 没有数据
--add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库 常用source 命令 进入mysql数据库控制台:
如mysql -u root -p mysql>use 数据库

方法二、针对mysql数据表格式为MyISAM的
假如数据文件在/var/lib/mysql
那么直接写个脚本
cp -r /var/lib/mysql /备份到的文件夹路径

隔机备份用rsync增量,或定时完整备份。

❾ 如何提高mysql脚本执行速度

看了一个优化案例觉的挺有代表性,这里记录下来做一个标记,来纪念一下随便的字段定义的问题。
回忆一下,在表的设计中很多人习惯的把表的结构设计成Varchar(64),Varchar(255)之类的,虽然大多数情况只存了5-15个字节.那么我看一下下面这个案例.
查询语句:
?1 SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = 1301 GROUP BY client_id, channel;该表(client_id,channel)是一个组合索引.
利用explain,看一下执行计划,对于索引使用上看上非常完美?1234567 mysql> explain SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = 1301 GROUP BY client_id, channel; +----+-------------+-------------+-------+--------------------+--------------------+---------+------+----------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+-------+--------------------+--------------------+---------+------+----------+--------------------------+ | 1 | SIMPLE | xxx_sources | index | idx_client_channel | idx_client_channel | 1032 | NULL | 20207319 | Using where; Using index | +----+-------------+-------------+-------+--------------------+--------------------+---------+------+----------+--------------------------+ 1 row in set (0.00 sec)看一下实际执行:
?1234567 mysql> SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = 1301 GROUP BY client_id, channel; +---------+----------+ | channel | visitors | +---------+----------+ | NULL | 0 | +---------+----------+ 1 row in set (11.69 sec)实际执行的情况非常的糟糕.传通的想法,这个执行从索引上执行计划上看非常完美了,好象和MySQL没什么关系了. 在去看一下表的设计会发现client_id也是设计成了varchar(255).看到这里不防可以使用下面的方法试一下:
?1234567 mysql> explain SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = '1301' GROUP BY client_id, channel; +----+-------------+-------------+------+--------------------+--------------------+---------+-------+--------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+------+--------------------+--------------------+---------+-------+--------+--------------------------+ | 1 | SIMPLE | xxx_sources | ref | idx_client_channel | idx_client_channel | 258 | const | 457184 | Using where; Using index | +----+-------------+-------------+------+--------------------+--------------------+---------+-------+--------+--------------------------+ 1 row in set (0.00 sec)从执行计划上来看,差不多,但实际差多了.具体上来看key_len从1032降到了258,执行计划变成了const基于等于的查找,行数从原来千万级到了十万级了.不算也能明白IO节省了很多.
再来看实际执行:
?1234567 mysql> SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = '1301' GROUP BY client_id, channel; +---------+----------+ | channel | visitors | +---------+----------+ | NULL | 0 | +---------+----------+ 1 row in set (0.25 sec)哇,从11.69秒变成了0.25秒,这是什么概念,优化了多少倍,算一下吧.
看到这里在想什么呢,记住这个案例,嗯,不错,以后还可以加引号优化一下.那为什么不问一下,能不能在优化了,为什么会这样呢?
我们先来看一下第一个问题:
能不能在优化了?
答案是当然可以了.从索引的长度上来看258还是一个非常大的数据,对于client_id这个字段从名字上来看,也只会存数据型的值,那为什么不用的一个int unsigned去存呢,索引的长度马上会从258降到4。这样不是又节省了很多吗?
接下来看一下第二个问题,为什么会这样呢?
原因有两点,同时基于一个原则,基于成本的优化器。对于client_id在表的定义时定义成了字符型的值,在查询时传入了数值型的值,需要经过一个数值转换,悲剧的开始,最终导致MySQL选择了一个完成的索引去扫描。
从这个案例上,我们需要注意什么呢?
合理的选择数据类型,基本工太重要了,就这叫赢在起跑线,一切都不能随便了,别把一个表定义成了降了主建外其它全是Varchar(255)。对数据库的double/float这种字段做索引时一定要小心。

❿ MySql怎样跟踪SQL脚本执行

其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可。

开启mysql的日志log方法:

windows环境下的配置方法:

我使用的版本:Version: 5.0.37-community-nt-log (MySQL Community Edition (GPL))
找到my.ini,我的是在“G:\Program Files (x86)\MySQL\MySQL Server 5.0”目录下,
找到[mysqld],在下面添加:

log=存放日志的路径/my.log

热点内容
演示文稿如何取消密码 发布:2024-12-25 21:21:18 浏览:96
最近上传视频 发布:2024-12-25 21:05:39 浏览:393
php招聘源码 发布:2024-12-25 21:05:38 浏览:988
c语言输入数组赋值 发布:2024-12-25 21:01:43 浏览:652
22款奔驰e买哪个配置 发布:2024-12-25 20:54:08 浏览:737
金铲铲之战怎么看之前的服务器 发布:2024-12-25 20:52:36 浏览:448
unix环境高级编程英文版 发布:2024-12-25 20:50:35 浏览:291
我的世界电脑版服务器如何改实验模式 发布:2024-12-25 20:41:57 浏览:129
数据库删过程 发布:2024-12-25 20:39:38 浏览:447
创建sql存储过程 发布:2024-12-25 20:29:14 浏览:532