本文目录一览:
MySQL数据导入导出的几种方法
1.使用create table xx as select
create table testtable as select distinct username,mname,college,mobno,cid from swdaydetail where sdate='20171101' and sdate'20171130';1
2.使用MySQL的SELECT INTO OUTFILE 、Load data file
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。当用户一前一后地使用SELECT … INTO OUTFILE 和LOAD DATA
INFILE 将数据从一个数据库写到一个文件中,然后再从文件中将它读入数据库中时,两个命令的字段和行处理选项必须匹配。否则,LOAD DATA INFILE 将不能正确地解释文件内容。
假设用户使用SELECT … INTO OUTFILE 以逗号分隔字段的方式将数据写入到一个文件中:
SELECT * INTO OUTFILE 'data.txt' FIELDS TERMINATED BY ',' FROM table2; 1
为了将由逗号分隔的文件读回时,正确的语句应该是:
LOAD DATA INFILE 'data.txt' INTO TABLE table2 FIELDS TERMINATED BY ','; 1
如果用户试图用下面所示的语句读取文件,它将不会工作,因为命令LOAD DATA INFILE 以定位符区分字段值:
LOAD DATA INFILE 'data.txt' INTO TABLE table2 FIELDS TERMINATED BY '\t'; 1
下面是用来导入导出的命令:
select * into outfile 'ddd.txt' fields terminated by ',' from dn_location; load data infile 'ddd.txt' into table dn_location2 FIELDS TERMINATED BY ','; 12
3.使用mysqldump ,source
mysqldump -u root -p -q -e -t webgps4 dn_location2 dn_location2.sql
mysqldump -u root -p -q -e -t --single-transaction webgps4 dn_location2 dn_location2.sql source dn_location2.sql 123
以上是导入导出数据的语句,该方法15分钟导出1.6亿条记录,导出的文件中平均7070条记录拼成一个insert语句,通过source进行批量插入,导入1.6亿条数据耗时将近5小时。平均速度:3200W条/h。后来尝试加上–single-transaction参数,结果影响不大。另外,若在导出时增加-w参数,表示对导出数据进行筛选,那么导入导出的速度基本不变,筛选出的数据量越大,时间越慢而已。对于其中的参数这里进行说明:
–quick,-q
该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
–extended-insert, -e
使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用–skip-extended-insert取消选项。
–single-transaction
该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用–quick 选项。在本例子中没有起到加快速度的作用
mysqldump -uroot -p –host=localhost –all-databases –single-transaction
-t 仅导出表数据,不导出表结构
转载自
如何导出和导入mysql数据
MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录
如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqldump -u 用户名 -p 数据库名 导出的文件名
如我输入的命令行:mysqldump -u root -p news news.sql (输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
3、会看到文件news.sql自动生成到bin文件下
命令行导入数据库:
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysqluse 目标数据库名
如我输入的命令行:mysqluse news;
6,导入文件:mysqlsource 导入的文件名;
如我输入的命令行:mysqlsource news.sql;
MySQL导出导入SQL文件命令方法
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 导出的`文件名
mysqldump -u wcnc -p smgp_apps_wcnc wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc d:wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysqluse 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysqlsource d:wcnc_db.sql
mysql怎么导入和导出数据库文件
附加数据库
或者导入数据库
sql本身有数据导入的操作。但如果要从一个备份的文件中导入数据,则要进行另外的操作。下面以一个例子进行说明。
sql服务器上已有一个doe数据库,并且里面有大量的数据,现准备从另外一个备份文件a1.bak(不是doe数据库的备份文件)中导入另外的数据(即导入后在doe中增加一些数据表,表中已录有数据),并保持原doe的数据不变。
1、首先,在“sql企业管理器”中新建一个临时数据库a1。
2、右击a1数据库,选择:所有任务->还原数据库。
3、在“还原数据库”窗口中,选择:“从设备”。
4、点击“选择设备”。
5、点击“添加”。
6、从文件名中选择要还原的数据库文件,如a1.bak。
7、点击“确定”,返回“还原数据库”窗口。
8、点击“选项”卡,进入选项设置。
9、钩选:“在现有数据库上强制还原”。
10、修改“移到物理文件名”为:“c:\a1.ldf”、“c:\a1.mdf”。
11、点确定,即可导入备份文件中的数据到临时数据库a1中。
12、此时,你可以将数据从a1导入到另外一真正要导入的数据库中,如doe数据库。
(下面的数据导入操作为sql2000企业管理器的一般数据导入导出操作。)
13、在“sql企业管理器”中选择“doe”数据库。
14、右击doe数据库,选择:所有任务->导入数据。
15、在“dts导入/导出向导”窗口的“选择数据源”中,数据源选择刚才建立并导入数据的临时数据库a1。点击下一步。
16、在“选择目的”中,系统已经默认为doe数据库。
17、连续点击“下一步”,直到完成。
经过上面的操作,你已经成功地将备份文件a1.bak中数据导入doe数据库中,并且doe数据库原有数据不变。
此时,你可以删除临时数据库a1。