最近的工作,围绕师兄离职展开,嗯,还需要恶补的大概有:数据库设计与操作、git常见使用问题、数据库导入导出、熟悉合代码啥的。
在导入师兄给的1GB左右的数据库sql文件的时候,很郁闷的发现,导入一半卡住了,嗯,于是,委琐的手动导出了剩下没有导入的数据库,然后再导进去。
那么,遇到这种情况,是否可以考虑其他方式呢?那就是csv导入导出这种方式了,可以说是很适合了。
------------------------------------------我是分界线--------------------------------------------------------------------------
步骤详解
1:从原有数据库导出数据
#选择test.userlist数据表中的内容,存储到E://test-csv/test.userlist.csv中去
SELECT * INTO OUTFILE 'E://test-csv/test.userlist.csv' FIELDS TERMINATED BY ',' FROM `test`.`userlist`;
使用类似上面的这样的语句就好了的,将所有数据库中涉及到的数据表依次导出。
2:在新的机器上构建数据库的结构
#导出数据库的格式设计:
CREATE SCHEMA `csvtest` DEFAULT CHARACTER SET utf8 ;
#数据库1
DROP TABLE IF EXISTS `userlist`;
CREATE TABLE `userlist` (
`userid` int(11) NOT NULL,
`username` varchar(45) DEFAULT NULL,
PRIMARY KEY (`userid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3:导入数据到新建的数据库结构中去
#导入userlist
load data infile 'E://test-csv/test.userlist.csv' into table userlist character set 'utf8' fields TERMINATED BY ',';
总结一下
如果你的数据库中不涉及到外键的话,这样的方式,在构建数据库结构、导入数据到新建的数据库结构中去的时候,是不需要区分先后关系的,而如果你的数据库中涉及到了外键的话,那么,在构建数据库结构、导入数据到新建的数据库结构中去的时候,是需要区分先后关系的。
适用情形
1:适用于数据量很大,而没有外键的情况
2:适用于有外键,数据量很大,一次导出,多次导入
3:适用于有外键,数据量很大,结构基本不变