记录一次向TiDB数据库导入数据的例子
导出数据
今天从Mysql的某个库中导出一个表大概有20分钟吧,等了一会终于导出成功了。查看一下文件的大小:
[tidb@:vg_adn_CkhsTest ~]$du -h ./creative_output.sql
41G ./creative_output.sql
这个文件是相当大的,有41G左右。
导出的命令很简单:mysqldump -hhost -uname -ppwd 表名 > xxx.sql
就这样就导出来的,我们只需要等结果就可以。
如果我们想导出一个数据库,那就要使用:mysqldump -hhost -uname -ppwd --database 库名 > xxx.sql。也就是说多加了一个参数。
导入数据
使用mysqldump导出的数据,我们打开查看一下会发现是含有表结构的,并不是说像Csv那样的纯文本数据,因此使用source命令到导入数据即可。
由于本人搞混了几个备份和恢复数据的命令,导致本来就很快搞定的事情,花了几个小时。虽然踩了不少坑,但还是有收获的。
注意:mysqldump导出的数据是含有表结构的数据,除此之外还含有mysql的一些状态参数等。并不是纯文本数据。所以这里我一开始使用了load data命令来导入数据,发现总是出错的。且先不说load data命令的参数挺多的。
使用load data参数导入数据的时候,要确认一下导入的文件是不是纯文本文件,load data只适合导入一下类似与csv类型的文本。这种类型的文本只有数据,所以你要先创建好数据库后还要创建好表的结构,我这次就是又去尝试创建表结构后去导入数据,在这个过程中其中我心里面就觉得怪怪的,因为我之前也做过对表的备份,那个时候我并没有建表,而是直接将表导入数据库就可以了,但是怎么导入的我就是想不起来。后来去网上查找一下发现有个load data命令可以导入,所以我就一直在踩坑。一直在load data命令里面错误循环。
所以在这里纠正一下,mysqldump导出的数据使用mysql命令(客户端未登录数据库)或者source命令(客户端链接mysql后)来导入数据。
1、首先出现错误:
# mysqlimport -uabc -p'' -h db1 -P DB a.txt
mysqlimport: Error: , The MySQL server is running with the --secure-file-priv option so it cannot execute this statement, when using table:
是因为mysql限制了导入数据的目录,修改一下就可以了。
我们来查看--secure-file-priv参数
> show global variables like 'secure_file_priv';
+------------------+-----------+
| Variable_name | Value |
+------------------+-----------+
| secure_file_priv | /dev/null |
+------------------+-----------|
此参数不是动态参数。需要添加配置文件,重启服务才可以生效。
1)不限制导入导出
# cat /etc/my.cnf
[mysqld]
secure_file_priv = ""
2)限制在特定目录下
# cat /etc/my.cnf
[mysqld]
secure_file_priv = /tmp
--只允许/tmp目录下的数据文件可以导入,其他目录下的文件没有权限导入。
2、在load data的时候,也出现了一些错误:比如:
>load data .........................
error(2013):Lost connection to MySQL server during query
像这种错误就是客户端连接mysql数据库延时的错误。再深入一点就是说sql语句操作的时间过长,查询或导入的语句过大导致的。
我们可以这样子做:
先查看max_allowed_packet的值是多少:
show VARIABLES like '%max_allowed_packet%';
如果你觉得比较小,那么在mysql客户端中对max_allowed_packet等几项设置较大的值。以KB为单位
比如:
set global max_allowed_packet = 50000000 set global wait_timeout=2880000
set global interactive_timeout = 2880000
这三个中我们要先设置第一个,先把第一个设置的值大一点,上面的这个例子是我已经设置过了,你的查出来可能不会有这么大,因为我的文件就是40多个G ,因此我设置成了50G的大小,一般根据文件大小来设置。
如果第一个设置了之后还是出现同样的问题,那就把剩下的两个值也设置的大一点。注意:我上面是自己已经设置的比较大。
最后,你设置完之后要退出客户端重新连接一下才会生效(并不是重启mysql数据库),再次连接之后你会发现这个值就变成了你修改的那个值。不过重启过mysql之后这个值就会重新还原,因此如果你想要永久生效,最好在配置文件中添加这三个参数。
对我来说,本来导入的数据就不应该使用load data命令来导入,出现了上面的情况,因此修改了参数还是没有解决,而且,我的系统报错非常快,就是当你执行load data命令后,马上返回错误,这一点大家要注意,根本就没有超过延迟时间可就报错了,这本身就很可疑。
本次实验额参考了两位博主:
https://blog.csdn.net/lovemysea/article/details/79121154
https://www.aliyun.com/jiaocheng/1125866.html
参考连接:http://blog.51cto.com/11580138/1931925
记录一次向TiDB数据库导入数据的例子的更多相关文章
- Tidb数据库导入数据出现oom问题
今天使用insert操作向tidb中插入数据,发现正在导入的过程中出现如下错误: mysql: [Warning] Using a password on the command line inter ...
- Sqlserver 2005 跨数据库 导入数据
--Sqlserver 2005 跨数据库 导入数据:--SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/O ...
- 在C#应用程序中,利用表值参数过滤重复,批量向数据库导入数据,并且返回重复数据
在很多情况下,应用程序都需要实现excel数据导入功能,数据如果只有几十条,或上百条,甚至上千条,速度还好. 但是不仅如此,如果客户提供给你的excel本身存在着重复数据,或是excel中的某些数据已 ...
- MYSQL数据库导入数据时出现乱码的解决办法
我的一个网站在负载搞不定的情况下最终选择了数据库和程序分离的方式解决的高负载,但是再导入数据的时候出现了大量乱码,最终通过方法二解决掉导入数据的问题,后面再设计网站布局的时候数据库跟网站程序分离是个很 ...
- solr8.0 从数据库导入数据(三)
第一步:导入相关包: 在创建的核心目录下新建lib文件夹(如果有,无需建立),从Solr源码包的dist文件夹中导入两个solr-dataimporthandler包,以及一个mysql驱动包. 第二 ...
- Oracle 数据库导入数据和编码问题
配置 control 文件: load data characterset utf8 append into table role_res_gold fields terminated by ';' ...
- 【转】Solr从数据库导入数据(DIH)
本文转自:http://blog.csdn.net/xiaoyu714543065/article/details/11849115 一. 数据导入(DataImportHandler-DIH) DI ...
- Loading Data into a Table;MySQL从本地向数据库导入数据
在localhost中准备好了一个test数据库和一个pet表: mysql> SHOW DATABASES; +--------------------+ | Database | +---- ...
- MySQL从本地向数据库导入数据
本文来自:https://www.cnblogs.com/lettuce-u/p/10715795.html(自己收藏看) 在localhost中准备好了一个test数据库和一个pet表: mysql ...
随机推荐
- xml Schema include
first.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=&q ...
- mac 入门操作
1. 打开制定目录 在finder里使用command+shift+g 快捷键可以完成到达某路径的操作选中文件/目录,显示简介可以查看路径 2. home end pageUp pageDown 在苹 ...
- 对datagridview进行增删改(B)
create DATABASE stu ON ( name='stu.mdf', filename='F:\胡浴东\数据库\stu数据库\stu.mdf', size=, filegrowth= ) ...
- Java基础——Servlet(三)
还在学习Servlet,觉得这里的知识点蛮多的.还要继续努力,加油. 拿韩老师的话激励一下自己,共勉.韩老师说,“成功其实也不难,只要树立一个目标,不需要你是一个很强的人,不需要你很高智商,不需要你是 ...
- 解决 iframe 后退不是主页面后退(浏览器 history)问题
前言:项目中的主页面里有 iframe,切换 iframe 的 src 地址之后,再点浏览器的回退之后,会导致 iframe 里面回退,而不是主页面回退. 问题 浏览器机制的原因,在 iframe 导 ...
- java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/AnimatorCompatHelper
在开发过程中,有的时候引入了多个三方库.在调用的时候会出现版本对应不上的原因.就会出现如标题的异常. 原因 经过查找,项目中使用的RecycleView类,进入类里面发现AnimatorCompatH ...
- HDU2167(SummerTrainingDay02-D 状态压缩dp)
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- PHP如何批量更新MYSQL中的数据
最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...
- linux下lamp环境修改网站根目录
Apache默认的网站目录是在/var/www/html,我们现在要把网站目录更改成 /var/www 目录下,操作如下: 1.修改httpd,conf文件 vi /etc/httpd/conf/ht ...
- DouPHP去除Powered by DouPHP版权的方法
DouPHP标题版权修改:打开 include 目录下的 action.class.php 文件,搜索“Powered”找到下面一行代码: $page_title = ($titles ? $titl ...