zoukankan      html  css  js  c++  java
  • Mysql

    上传大的sql文件到数据库时出现的问题

    场景:
    由于需要对公司查询系统做一次改进,增加ES分布式搜索引擎,今天从数据库中导出了一批数据,测试数据库查询与ES查询的性能差异。另外开了几台服务器,用来搭建ES测试集群,在服务器中安装了Mysql,安装Mysql可以参考:centos6.5安装mysql。之后将sql文件导入数据库,以下是导入时遇到的问题

    准备工作

    linux服务器中,数据导入到数据库
    1)将sql文件放在某个目录下 例如:/opt
    2)登陆数据库
    3)source /opt/*.sql

    问题1、数据库中没有创建表

    一开始我以为可以直接将数据导入到数据库,不用任何其他操作,事实证明我错了,报了以上的错误,es下的表不存在,说明需要提前创建一个表,且表的字段需要包含sql文件中所有的字段,要不然也会报错。
    但是又出现了一个新的问题,表结构不知道,因为数据是同事从服务器拷下来的,而且只选取了部分字段,由于没有提前记录,所以不知道有哪些字段。好吧,那就打开文件看看吧,可是接近一亿条数据,用文本编辑器打开直接崩溃了,网上搜了一下可以用Editplus打开,试了一下打开还是很困难。
    后来只能让同事把所有字段都给我,把所有的字段都添加了。

    问题2、字段类型不对

    我根据创建的java实体类里面的成员变量来创建的表结构,数据库中的一些字段是用varchar类型的,但是用了其他的类型就会报以上的错。

    问题3、字段类型宽度

    int类型默认最多存储11个字节,int(20)是真实的分类了20个字节的空间用来存储,如果存储不满的话就会用0补全,所以不要用太长的宽度,除了必要,要不然就会浪费存储空间。

    问题4、编码问题

    在当初安装Mysql的时候就已经在配置文件中指定了默认编码格式是utf8,但是在上传数据的时候还是会报以下错误:

    说明字段使用了其他编码格式,后来查找博客发现,当时配置的默认编码格式是对数据库的编码格式的更改,对于表中的字段还有单独的编码格式,如果不对对应的字段更改编码格式,那么还是会出错
    解决方法:(设定字段的编码格式)
    alter table 表名 change 字段名 字段名 varchar(30) character set utf8

    总结

    如果在sql文件中开头写入一个创建表的sql语句,就可以直接导入数据,不用在数据库中创建了。当以上工作完成后,数据开始上传,虽然速度很快,但是由于数据量很大,花费时间还是比较长,以后如果能有更好的方法,比如批量上传,应该可以很大的减少时间。

  • 相关阅读:
    SenCha Touch AJAX跨域
    MS SQL 索引分析
    Tomcat性能优化(二) 启动参数设置
    PLSQL 连接不上64位ORACLE数据库解决办法
    PLSQL 配置连接ORACLE数据库
    Mybatis Batch 批量操作
    [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
    [No000000]常用软件测试编译环境声明
    [No000013]在Office中关闭自动拼写检查和自动语法检查
    [No000012]编程中浮点数之什么是科学计数法
  • 原文地址:https://www.cnblogs.com/xushun/p/11240969.html
Copyright © 2011-2022 走看看