在一个工程中数据库往往要分为实际运用数据库和测试数据库,最直接的方法当然是从源数据库中导出.sql文件再导入到本地的数据库中,我这的实例是原有一个项目数据库在服务器上现在想导出一份到本地做测试用,工程中用的是MySQL-connector-Java-5.1.13-bin.jar,而我现有的mysql数据库是mysql-connector-java-5.1.6-bin.jar不知道是否是版本不一,在本地使用navicat for mysql可以连接到服务器数据库,但是从服务器数据库导出的.sql文件后再导入到本地的数据库中总是出现错误:
[Err] 1064 - You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near ****[Err] /*
一、在网上找了很多方法都无法解决,无意中看到一个mysql数据同步的方法:
1>在本地建一个与数据库同名的数据库
2>选择navicat中连接服务器的数据库,在菜单栏选择工具-->数据传输3>在d出的的窗口中“源”部分就是你要导出的源数据库,“目标”就是本地的数据库,点击左下角全选后,再点击开始按钮点击确定
点击关闭
再来查看一下本地数据库,是不是数据和结构都已经导入到本地数据库中了呢。
二、从备份中导出.sql再导入到本地数据库中
1>在连接服务器中的数据库上新建备份,选中要备份的数据库-->点击菜单栏上的备份-->新建备份2>选择备份文件提取SQL
这样我们就得到了备份转储的.sql文件,再将这个.sql文件导入到本地的数据库中,结果...就不再提示有错误了,
将csv文件导入mysql,我们使用LOAD DATA INFILE的方式,这种方式导入的速度很快。LOAD DATA INFILE的使用方式将会另外的博客中进行介绍。下面主要介绍在使用的过程中遇到的错误:secute-file-priv
ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement
这个是mysql为了保护数据安全性的设定,secute-file-priv这个参数来限制数据的导入和导出的效果,在执行LOAD DATA、SELECT … INTO OUTFILE等语句时,需要用户具有file的权限
你说的一次性拼接2000条指的就是2000条sql语句拼在一起的一个很大的字符串吗,建议你还是换成for循环一条一条执行,性能上应该和一次性执行2000条区别不大(如果有区别,就加上参数化查询和事务处理)
数据丢失的问题,如果是抛异常,应该加上log看详细错误
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)