如何导入.sql文件到mysql中
10年积累的网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有隆德免费网站建设让你可以放心的选择与我们合作。
首先:建立数据库,用这个命令:create
database
dbname;
其中dbname是数据库名称
C:\mysql\binmysql
-u
用户名
-p
数据库名
mysql
-u
root
-p
myrosz
c:/myro.sql
Enter
password:
****
稍等一会,就可以导入数据表。
MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2. 方法一 SQL脚本形式
操作步骤如下:
2.1. 导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,导出SQL脚本。
2.1.1 用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
2.1.2 用mysqldump命令行
命令格式
mysqldump -u用户名 -p 数据库名 数据库名.sql
范例:
mysqldump -uroot -p abc abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2. 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
2.3. 将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。
2.3.1 用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1 准备原始文件
用tar打包为一个文件
3.2 创建空数据库
3.3 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydb.tar.gz
3.4 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/
对于FreeBSD:
cp * /var/db/mysql/mydb/
3.5 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
用shell脚本通过while循环批量生成mysql测试数据的方法。
1、很多时候需要在mysql表中插入大量测试数据,下面分享一个用shell脚本通过while循环批量生成mysql测试数据的方法,你只需要根据你自己的表结构来生成sql语句即可。
复制代码代码如下:
#!/bin/bash
i=1;
MAX_INSERT_ROW_COUNT=$1;
while [ $i -le $MAX_INSERT_ROW_COUNT ]
do
mysql -uroot -proot afs -e "insert into afs_test (name,age,createTime) values ('HELLO$i',$i % 99,NOW());"
d=$(date +%M-%d\ %H\:%m\:%S)
echo "INSERT HELLO $i @@ $d"
i=$(($i+1))
sleep 0.05
done
exit 0
2、假定上面的shell脚本保存为create-data.sh,可以通过下面的命令来生成数据:
复制代码代码如下:sh create-data.sh 10000。(参数10000是要生成的数据条数。)
insert into tablename values(value1,value2,...) insert into tablename(fieldname1,fieldname2,...) values(value1,value2,...) insert into tablename(fieldname1,fieldname2) select fieldname1,fieldname2 from tablename1 以上基本上罗列了用insert插入数据的方法,当然你也可以用insert语句将几行同时插入到一个表中.如下所示: 2.在mysql运行环境下,我们还可以用LOAD DATA 语句把文件里面的数据读取录入到表里面.一般来讲,因为此文件是由服务器在主机上直接读取的.所以你必须具有file权限且文件必须是完全可读.当你版本够新的话,你可以给出local,这样由于你是从客户机上读取该文件并将内容传送到服务器,你就不需要file权限. 如果你没有给出local,则服务器按如下方法对其进行定位: 1)如果你的filename为绝对路径,则服务器从根目录开始查找该文件. 2)如果你的filename为相对路径,则服务器从数据库的数据目录中开始查找该文件. 如果你给出了local,则文件将按以下方式进行定位: 1)如果你的filename为绝对路径,则客户机从根目录开始查找该文件. 2)如果你的filename为相对路径,则客户机从当前目录开始查找该文件. 说了半天,也许你还不明白这具体的格式,看下面先: LOAD DATA [LOCAL] INFILE 'filename' into table tablename import_options [(fieldname_list)] import options的语法为:fieldsterminated by 'char' enclosed by 'char' escaped by 'char'linesterminated by 'string' 下面我们对其进行一些说明: 1)fields terminated by char 指定分隔列的字符.缺省时假定列值由制表符分隔. 2)fields enclosed by char 指明列值应包括在指定的字符中.通常用引号.缺省时,假定列值不包括在任何字符中. 3)fields escaped by char 表示用于转义特殊字符的转义符.缺省时表示无转义符 4)lindes escaped by string 指定结束输入行的串(可以是多字符的).缺省时假定由换行符终止行 需要注意的是转义字符的使用. 如:\' 表示单引号,\" 表示双引号 等等.另外还有一些选项这里没有具体谈到,如 ignore n lines 她可以控制文件的前n行不被读入数据库.详细请看mysql中文参考. 说了上面这么多,给一行命令大家具体体会一下: load data [local] infile "sample.txt" into table sample fields terminated by "," enclosed by "\"" 3.在系统命令行下你可以用mysqlimport实用程序,她将文本文件的内容读取到已有表中(其实mysqlimport起的作用就是实现load data命令行的接口),调用完mysqlimport后她生成一个load data 语句.语法基本上和load data差不多: mysqlimport [options] sample_db filename 同样,给条命令看一下吧:
1、先添加完,删除所有重复的记录,再insert一次
insert into A select * from B;
insert into A select * from C;
insert into A select * from D;
2、删除重复的记录只保留一行
delete from A where name in (select id from t1 group by id having count(id) 1)and rowid not in (select min(rowid) from t1 group by id having
count(*)1);
3、记录一下这些重复的记录,
mysql -uroot -p123456 -Ddb01 -e 'select b.id from t1 b group by id having count(b.id) 1' | tail -n +2 repeat.txt
删除全部重复的记录
delete from A where name in (select name from t1 group by name having count(name) 1;);
再次插入多删的重复记录
#!/bin/sh
for id1 in `cat repeat.txt`;do
mysql -uroot -p123456 -Ddb01 -e "insert into A select * from B where id='${id1}'"
done