sql大数据分批查询导出
⑴ SqlServer2008 在用导入导出向导做大数据量导出时候,开始还比较快,越到后面越慢,大概1亿数据量
如果表不多的话,可以考虑用bcp来做,目标表可以先把索引禁掉,等数据全部导入之后再重建索引。
⑵ sqlserver2000大量数据库表从服务器如何导出到本地
我的建议:1.在服务器建立一个相同模型的数据库,将数据分批写进去,然后将模型数据库分离到本地附加就行了。
2.或者做服务器本地的数据库备份,定义备份作业,执行时间设在网站访问量小的时间段执行。
⑶ 请教各位,如何分批获取数据库中数据
在有些业务场景中需要分批去取数据库表中的全部数据来进行处理,最简单的方法就是使用分页查询语句(偷懒以MySQL为例):
[sql] view plain print?
select * from datatable limit offset,amount
select * from datatable limit offset,amount
这里就会有一个问题,随着offset值的越来越大,这条sql要扫描的表数据就会越来越多,因为要定位到offset这一行就需要扫描比offset小的所有行。显然在一张大数据量的表中,去这样做,性能就会出问题。为了避免这样的情形出现,我们自然会想到使用索引来解决,比如使用自增序列id进行分批取:
[sql] view plain print?
select * from datatable where id >= start and id<start+batchCount
select * from datatable where id >= start and id<start+batchCount
这样我们对id建索引,然后分批去取,显然效果会高很多,但是如果自增序列由于删除等操作变得不是连续,就会出现空执行和多执行的情况出现。要解决这个方法,我们就需要结合使用索引和分页的优势来处理:
[sql] view plain print?
select * from datatable where id >= start limit batchCount
select * from datatable where id >= start limit batchCount
然后每次取回来我们再计算出起始id值,再去取下一批数据。这样就可以既避免了第一种不走索引,查询性能低下的问题,又解决了第二种id不连续,导致取回来的数据量不稳定导致浪费的问题了。
⑷ 大数据量的mysql数据库怎么导出sql
mysqlmp -u 用户名 -p 数据库名 > 导出的文件名
试试这个命令?
⑸ plsql developer 如何分批导出数据 oracle数据库 因为数据太多 尝试导出html 达到2G 无法打开
数据量大,就不要用lsql developer 导出了,用imp或impdp导出都可以。
⑹ SQL怎么分批导出数据
企业管理器抄-工具-数据转换服务-导出数据-下一步-数据库(选择要导出数据表的所在数据库)-下一步-目的(t):选择你要想要转换的文件类型(比如说文本文件)-在桌面上建一个1.txt-文件名选中1.txt-下一步-默认从源数据库...-源:选择要导出的数据表-下一步-完成.
⑺ oracle sqldeveloper大数据量如何导入导出
方法一:利用PL/SQL Developer工具导出:
菜单栏---->Tools---->Export Tables
方法二:利用cmd的操作命令导出,详情如下:
1:G:Oracleproct10.1.0Client_1NETWORKADMIN目录下有个tnsname.ora文件,内容如下:
CMSTAR=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)(HOST=172.18.13.200)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=cmstar)
)
)
其中:CMSTAR为数据库名,HOST为IP地址,所以可以仿效上面的例子手动添加数据录连接。
2:用cmd进入命令行
输入:tnsping cmstar
就是测试172.18.13.200是否连接成功
3:导入与导出,如下:
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager
导出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp
full=y
2将数据库中system用户与sys用户的表导出
expsystem/manager@TESTfile=d:chu.dmpowner=(system,sys)
3将数据库中的表table1、table2导出
expsystem/manager@TESTfile=d:chu.dmptables=(table1,table2)
4将数据库中的表table1中的字段filed1以"00"打头的数据导出
expsystem/manager@TESTfile=d:chu.dmptables=(table1)query="wherefiled1like'00%'"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面加上compress=y就可以了
数据的导入
1将D:chu.dmp中的数据导入TEST数据库中。
impsystem/manager@TESTfile=d:chu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y就可以了。
2将d:chu.dmp中的表table1导入
impsystem/manager@TESTfile=d:chu.dmptables=(table1)
注意事项:导出dmp数据时需要有导出表的权限的用户,否则不能导出。
PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL
Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍。
导出步骤:
1 tools ->export user object 选择选项,导出.sql文件。
2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件。
导入步骤:
注:导入之前最好把以前的表删除,当然导入另外数据库除外。
1 tools->import tables->SQL Inserts
导入.sql文件。
2 tools->import talbes->Oracle Import然后再导入dmp文件。
一些说明:
Tools->Export User Objects导出的是建表语句(包括存储结构)。
Tools->Export
Tables里面包含三种导出方式,三种方式都能导出表结构以及数据,如下:
Oracle Export
Sql Insert
pl/sql
developer
第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广
。
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下:
table contains one or more LONG columns cannot export in sql format,user Pl/sql
developer format instead)。
第三种是导出为.pde格式的,.pde为Pl/sql
developer自有的文件格式,只能用Pl/sql developer自己导入导出,不能用编辑器查看。
⑻ SQL如何分批导出数据
第一:使用Select Into 语句
如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入。
select into语句的作用是把数据从另外一个数据库中查询出来,然后插入到用户指定的某个表中。
注意:使用该语句需要注意四个前提
1:需要在目的数据库中建立相关的表
2:这种方法,只复制表中的数据,而不复制表中的索引。
3:这条语句的使用具有局限性,要求源表与目的表所在的数据库都必须是SQL Server,可以允许版本不同。
4:采用这条语句的时候,目的表中不能有数据。否则的话,目的表中的数据将会被清除,也就是说 ,这条语句不支持表与表数据的合并。
在SQL Server中,有一条语句支持表与表数据的合并,那就是insert into,它的作用是把另一张表中的数据插入到当前表中。
若用户想要合并两个表的数据,可以采用此语句。
5:以上两条语句均支持兼容的不同类型的数据类型。例如,在原表中,某个字段的数据类型是整型,而在目的表中,这个字段的数据类型是浮点型,
这两种类型的数据是兼容的,所以数据库是允许这样导入的。
第二:利用Excel等中间工具进行控制。
虽然第一种方法操作比较简单,但是也有一些缺点。如它只支持同一种类型的数据库,不能对数据进行过多的干预等等。一般情况下,若用户数据准确度比较高,
不需要过多的修改,拿来就可以使用的话,笔者建议采用第一种方式。
但是,若在源数据库中,数据的准确度不是很高,又或者,有很多数据时错误的,没有实际意义的。总之,需要对源数据进行整理才能够导入的情况,建议不直
接导入,再进行修改的做法。在这种情况下,最好是先将源数据导出成Excel文件,有些数据库,如Oracle,不支持导出Excel文件,但是它支持导出csv文件,
这种文件也可以,Excel文件可以打开的。
然后,再在Excel中 ,对源数据进行修改。由于Excel是一个很强的表格处理工具,所以,在Excel中修改数据,比在数据库中修改数据要容易一些,也来的简单。
如可以利用按时间排序功能,把一些长久不用的记录清除掉,也可以利用替换功能,把一些不规范的字符替换掉。这些在数据库中比较复杂的任务,在Excel中却
可以轻松的完成。
等到Excel表中的数据修改无误后,就可以把Excel表格文件直接导入到SQL Server数据库中,SQL Server与Excel的兼容性很好,在Sql Server中提供了直接
从Excel文件中导入数据的工具。
这种方式虽然要借助中间工具导入数据,但是,处理起来方便,直观,所以很多时候我们需要这种方式来完成数据导入任务。
⑼ mysql如何分批导出超150万行数据表,因为CSV文件用excel打开最多容纳104万行
mysqlmp -u用户名 -p密码 -t -T /var/lib/mysql-files/ 数据库名 表名 --where="筛选条件" --fields-terminated-by=',' --fields-enclosed-by='\"'
参数说明:
-t 不打印表的创建信息
-T 以 txt 文本输出回/var/lib/mysql-files/,输出的地答址为 show variables like 'secure_file_priv'; 查询出的
--fields-terminated-by 字段之间以,分割
--fields-enclosed-by 每个字段用“包含
输出的文件在/var/lib/mysql-files/,文件名为表名.txt
⑽ 如何在pl/sql中实现大数据量的搬移
方法一:利用PL/SQL Developer工具导出:菜单栏---->Tools---->Export Tables
方法二:利用cmd的操作命令导出,详情如下::G:\Oracle\proct\10.1.0\Client_1\NETWORK\ADMIN目录下有个tnsname.ora文件,内容如下:
1
2
3
4
5
6
7
8
9
10
CMSTAR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)(HOST = 172.18.13.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cmstar)
)
)
其中:CMSTAR为数据库名,HOST为IP地址,所以可以仿效上面的例子手动添加数据录连接。
2:用cmd进入命令行输入:tnsping cmstar就是测试172.18.13.200是否连接成功
3:导入与导出,如下:数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\chu.dmp中exp system/manager@TEST file=d:\chu.dmp full=y2将数据库中system用户与sys用户的表导出expsystem/manager@TESTfile=d:\chu.dmpowner=(system,sys)3将数据库中的表table1、table2导出expsystem/manager@TESTfile=d:\chu.dmptables=(table1,table2)4将数据库中的表table1中的字段filed1以"00"打头的数据导出expsystem/manager@TESTfile=d:\chu.dmptables=(table1)query=\"wherefiled1like'00%'\"