- 浏览: 564084 次
- 性别:
- 来自: newsk
文章分类
最新评论
-
恋无涯:
希望还是改进一下吧,不要重复 br.readLine();读的 ...
java jdbc向数据库插入大量数据 -
huangfei0079:
感谢分享!问题解决
easyui ie 8 位置不对 -
dzhappy:
objectToJson这个方法里面当对象为Integer类型 ...
java json格式化工具类 -
背着家走:
你这个没有体现出来两个元素哈希值一致的情况呀
java数据结构 (哈希表) -
vanestone:
//格式化金额
//优化负数格式化问题
func ...
jquery 格式化金额
1。关于大容量数据导入导出的一些方法
SQL SERVER提供多种工具用于各种数据源的数据导入导出,这些数据源包括本文文件、ODBC数据源、OLE DB数据源、ASCII文本文件和EXCEL电子表格。
2.常用工具
DTS:数据转换服务导入导出向导或者DTS设计器创建DTS包
使用SQL SERVER复制发布数据
BCP命令提示实用工具实现SQL SERVER实例和数据文件之间的数据导入导出
BULK INSERT实现从数据文件导入数据到SQL SERVER实例
分布式查询实现从一个数据源选择数据插入到SQL SERVER实例
SELECT INTO 语句插入数据表
3.导入导出的数据
1。导入数据的目标表必须存在。导出数据的目标文件如果存在,则将重写上面的内容。如果不存在,则BCP自动创建文件
2。数据文件中的数据必须是字符格式或是先前由bcp工具生成的格式(本机格式)
3。必须对相应的表拥有足够的权限
4。数据导入导出工具的简单用法
4.数据导入导出工具的简单用法
a.DTS
DTS是一组图形工具和可编程对象,是开发者可以将取自完全的不同源的数据析取、转换并合并成一个或者多个。
它的特点就是可以融合完全不同源的数据源 这在企业改进中应用很大 。
这里涉及到一个DTS包,它是一个有组织的链接、DTS任务、DTS转换和工作流约束的集合。
关于DTS的操作请参看相关具体文献。
b.BCP
它常用于将大量的数据从另外的程序转移到SQL SERVER表中。当然也可以用于将表中数据传输到数据文件中。
下面是一些BCP的简单用法(关于很多的选项使用看相关文档)
--前序,开启xp_cmdshell
--关于xp_cmdshell的一些知识请看http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspx
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
--环境
create table test
(
id int,
value varchar(100)
)
go
insert test values(1,'s1')
insert test values(2,'s2')
insert test values(3,'s3')
insert test values(4,'s4')
go
--1将表的数据导出到TEXT.txt文件中
exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:test.txt -c -Usa -P123456'
--如果是WINDOWS身份直接xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:test.txt -T -c'
--2将TEXT.txt文件中的数据复制到test1表
select*into test1 from test where 1=2exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:test.txt -c -Usa -P123456'
select*from test1
--3将TEST表的ID字段复制到TEXT.txt中
exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:test.dat -T -c'
--4将test表中的第一行移动到text.txt中
exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test " queryout e:test.txt -c -Usa -P123456'
--关闭xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
c.BULK INSERT
它只能用于数据导入到SQL SERVER实例中,但是我们一般会选择使用它,因为它比BCP使用工具快。
小例子:
--truncate table test
BULK INSERT tempdb..test
FROM 'E:test.txt'
WITH (
FIELDTERMINATOR =',',--字段分割符号
ROWTERMINATOR ='n'--换行符号
)select*from test /*id value----------------------
1 s12 asds3 sadsa100 2asda*/
ps:只写最简单用法,具体参数很多,参考MSDN
d.分布式查询
--包含访问OLE DB 数据源中的远程数据所需的全部连接信息。
--当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用OLE DB 连接并访问远程数据的一次性的临时方法。
--对于较频繁引用OLE DB 数据源的情况,请改为使用链接服务器。
--A.将OPENROWSET 与SELECT 和SQL Server Native Client OLE DB 访问接口一起使用(MSDN)
以下示例使用 SQL Server Native Client OLE DB 访问接口访问 TEST.A 表,该表位于远程服务器SERVER1 上的 POOFLY 数据库中.
SELECTa.*FROM OPENROWSET('SQLNCLI', 'Server=SERVER1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM POOFLY.TEST.A
ORDER BY GroupName, Name') AS a;
--B. 使用Microsoft OLE DB Provider for Jet(MSDN)
以下示例通过 Microsoft OLE DB Provider for Jet 访问 Microsoft Access Northwind 数据库中的 Customers 表。
SELECTCustomerID, CompanyName
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:Program FilesMicrosoft OfficeOFFICE11SAMPLESNorthwind.mdb';
'admin';'',Customers)
GO
为了导入大型对象数据,OPENROWSET BULK 子句支持三个选项,允许用户以单行或单列行集导入数据文件的内容。
你可以指定其中一个大型对象选项,而不是使用格式化文件。
大型对象选项包括:
SINGLE_BLOB
以单行读取data_file 的内容,以varbinary(max) 类型的单列行集返回内容。
SINGLE_CLOB
以字符读取指定数据文件的内容,以varchar(max) 类型的单行、单列行集返回内容,使用的是当前数据库的排序规则,例如文本或Microsoft Word 文档。
SINGLE_NCLOB
以Unicode 读取指定数据文件的内容,以nvarchar(max) 类型的单行、单列行集返回内容,并使用当前数据库的排序规则。
以下示例创建一个用于演示的小型表,并将名为 Text1.txt 的文件中的文件数据插入 varchar(max) 列中。
CREATE TABLE my_Test(Document varchar(max))
GO
INSERT INTO my_Test select*FROM OPENROWSET(BULK N'E:test.txt', SINGLE_CLOB) AS Document
GOselect*from my_Test/*Document
ASDSADASDSADSADSAFKJHFAS HKLASJHASHBKDSAHKJDHSAKJDHSAKDHSAKDHSA
e.SELECT INTO
关于这个的用法 相信大家都很清楚了 我就不说明了。
5。优化导入导出数据的一些方法
1。使用最小日志记录:
a.恢复模式是简单模式或者大容量日志记录模式。如果你是完整模式,可以在进行操作前改成大容量日志模式,插入后改回来
b.目的表没有触发器,没有索引,指定了TABLOCK
2。将数据从多个客户端并行导入到单个表:
a.如果是完整恢复模式,改成大容量日志模式
b.指定了TABLOCK
c.表上没有索引
3。使用批处理:通过设置BCP或者BULK INSERT的相关选项,是用于可以指定在操作过程中发给SQL的每个批处理的行数。
4。禁用触发器和约束:默认情况下是禁用的。如果要检查,可以在复制完成后进行一次更新操作(当然值不可以变)
5。对数据文件中的数据排序:通过设置ORDER提示,提高性能。默认数据文件是不排序的。
6。控制锁定行为:指定大容量操作过程获得一个大容量更新表级锁,这样可以减少表上锁的争夺。
7。回避DEFAULT:通过设置相关选项,回避在复制数据到表中时,对有DEFAULT的列插入默认值,而是改成在列中值为NULL。
SQL SERVER提供多种工具用于各种数据源的数据导入导出,这些数据源包括本文文件、ODBC数据源、OLE DB数据源、ASCII文本文件和EXCEL电子表格。
2.常用工具
DTS:数据转换服务导入导出向导或者DTS设计器创建DTS包
使用SQL SERVER复制发布数据
BCP命令提示实用工具实现SQL SERVER实例和数据文件之间的数据导入导出
BULK INSERT实现从数据文件导入数据到SQL SERVER实例
分布式查询实现从一个数据源选择数据插入到SQL SERVER实例
SELECT INTO 语句插入数据表
3.导入导出的数据
1。导入数据的目标表必须存在。导出数据的目标文件如果存在,则将重写上面的内容。如果不存在,则BCP自动创建文件
2。数据文件中的数据必须是字符格式或是先前由bcp工具生成的格式(本机格式)
3。必须对相应的表拥有足够的权限
4。数据导入导出工具的简单用法
4.数据导入导出工具的简单用法
a.DTS
DTS是一组图形工具和可编程对象,是开发者可以将取自完全的不同源的数据析取、转换并合并成一个或者多个。
它的特点就是可以融合完全不同源的数据源 这在企业改进中应用很大 。
这里涉及到一个DTS包,它是一个有组织的链接、DTS任务、DTS转换和工作流约束的集合。
关于DTS的操作请参看相关具体文献。
b.BCP
它常用于将大量的数据从另外的程序转移到SQL SERVER表中。当然也可以用于将表中数据传输到数据文件中。
下面是一些BCP的简单用法(关于很多的选项使用看相关文档)
--前序,开启xp_cmdshell
--关于xp_cmdshell的一些知识请看http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspx
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
--环境
create table test
(
id int,
value varchar(100)
)
go
insert test values(1,'s1')
insert test values(2,'s2')
insert test values(3,'s3')
insert test values(4,'s4')
go
--1将表的数据导出到TEXT.txt文件中
exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:test.txt -c -Usa -P123456'
--如果是WINDOWS身份直接xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:test.txt -T -c'
--2将TEXT.txt文件中的数据复制到test1表
select*into test1 from test where 1=2exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:test.txt -c -Usa -P123456'
select*from test1
--3将TEST表的ID字段复制到TEXT.txt中
exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:test.dat -T -c'
--4将test表中的第一行移动到text.txt中
exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test " queryout e:test.txt -c -Usa -P123456'
--关闭xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
c.BULK INSERT
它只能用于数据导入到SQL SERVER实例中,但是我们一般会选择使用它,因为它比BCP使用工具快。
小例子:
--truncate table test
BULK INSERT tempdb..test
FROM 'E:test.txt'
WITH (
FIELDTERMINATOR =',',--字段分割符号
ROWTERMINATOR ='n'--换行符号
)select*from test /*id value----------------------
1 s12 asds3 sadsa100 2asda*/
ps:只写最简单用法,具体参数很多,参考MSDN
d.分布式查询
--包含访问OLE DB 数据源中的远程数据所需的全部连接信息。
--当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用OLE DB 连接并访问远程数据的一次性的临时方法。
--对于较频繁引用OLE DB 数据源的情况,请改为使用链接服务器。
--A.将OPENROWSET 与SELECT 和SQL Server Native Client OLE DB 访问接口一起使用(MSDN)
以下示例使用 SQL Server Native Client OLE DB 访问接口访问 TEST.A 表,该表位于远程服务器SERVER1 上的 POOFLY 数据库中.
SELECTa.*FROM OPENROWSET('SQLNCLI', 'Server=SERVER1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM POOFLY.TEST.A
ORDER BY GroupName, Name') AS a;
--B. 使用Microsoft OLE DB Provider for Jet(MSDN)
以下示例通过 Microsoft OLE DB Provider for Jet 访问 Microsoft Access Northwind 数据库中的 Customers 表。
SELECTCustomerID, CompanyName
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:Program FilesMicrosoft OfficeOFFICE11SAMPLESNorthwind.mdb';
'admin';'',Customers)
GO
为了导入大型对象数据,OPENROWSET BULK 子句支持三个选项,允许用户以单行或单列行集导入数据文件的内容。
你可以指定其中一个大型对象选项,而不是使用格式化文件。
大型对象选项包括:
SINGLE_BLOB
以单行读取data_file 的内容,以varbinary(max) 类型的单列行集返回内容。
SINGLE_CLOB
以字符读取指定数据文件的内容,以varchar(max) 类型的单行、单列行集返回内容,使用的是当前数据库的排序规则,例如文本或Microsoft Word 文档。
SINGLE_NCLOB
以Unicode 读取指定数据文件的内容,以nvarchar(max) 类型的单行、单列行集返回内容,并使用当前数据库的排序规则。
以下示例创建一个用于演示的小型表,并将名为 Text1.txt 的文件中的文件数据插入 varchar(max) 列中。
CREATE TABLE my_Test(Document varchar(max))
GO
INSERT INTO my_Test select*FROM OPENROWSET(BULK N'E:test.txt', SINGLE_CLOB) AS Document
GOselect*from my_Test/*Document
ASDSADASDSADSADSAFKJHFAS HKLASJHASHBKDSAHKJDHSAKJDHSAKDHSAKDHSA
e.SELECT INTO
关于这个的用法 相信大家都很清楚了 我就不说明了。
5。优化导入导出数据的一些方法
1。使用最小日志记录:
a.恢复模式是简单模式或者大容量日志记录模式。如果你是完整模式,可以在进行操作前改成大容量日志模式,插入后改回来
b.目的表没有触发器,没有索引,指定了TABLOCK
2。将数据从多个客户端并行导入到单个表:
a.如果是完整恢复模式,改成大容量日志模式
b.指定了TABLOCK
c.表上没有索引
3。使用批处理:通过设置BCP或者BULK INSERT的相关选项,是用于可以指定在操作过程中发给SQL的每个批处理的行数。
4。禁用触发器和约束:默认情况下是禁用的。如果要检查,可以在复制完成后进行一次更新操作(当然值不可以变)
5。对数据文件中的数据排序:通过设置ORDER提示,提高性能。默认数据文件是不排序的。
6。控制锁定行为:指定大容量操作过程获得一个大容量更新表级锁,这样可以减少表上锁的争夺。
7。回避DEFAULT:通过设置相关选项,回避在复制数据到表中时,对有DEFAULT的列插入默认值,而是改成在列中值为NULL。
- bulk_一些资料.zip (162.5 KB)
- 下载次数: 6
发表评论
-
How to use GROUP BY to concatenate strings in SQL Server?
2015-06-11 10:34 931CREATE TABLE #YourTable ([ID] ... -
sqlserver 自定义函数返回表类型
2013-01-29 14:34 1430use WANSYSTEMDB go create ... -
sqlserver 分页的写法
2012-11-22 11:54 966SELECT * FROM ( SELEC ... -
sqlserver Msqlserver服务启动时报1069错误
2012-11-02 12:35 934首先介绍网络上常用的两种解决方法: 1.我的电脑--控制面 ... -
SQL Server 跨数据库查询(转)
2012-08-22 13:53 9451语句 SELECT * FROM 数据库A.db ... -
sqlserver 把结果集拼成一行字符串
2012-07-23 23:25 1094declare @fulltext nvarchar(40 ... -
sqlserver 分割字符串
2012-07-23 23:24 1043USE [WANSYSTEMDB] GO /***** ... -
sqlserver 批量替换字段的字符串
2012-07-19 00:51 880update 表 set 字段=replace( 字段,'旧信 ... -
sql server端口号配置的方法详解(1)
2012-07-10 14:45 893http://database.51cto.com/art/2 ... -
sqlserver 忘记密码
2012-07-09 17:22 1109SQLserver忘记sa密码修改方法【转】 通过企业管理器 ... -
判断局部临时表是否存在
2012-06-27 04:48 966if object_id('tempdb..#tempco ... -
sqlserver 临时表
2012-06-20 23:31 1012本地临时表的名称前面有一个编号符 (#table_name ... -
sqlserver将一张表的数据全部导入到另一张表应该怎么写
2012-06-19 10:42 2248有两种写法 1.INSERT INTO SELECT语句 ... -
sqlserver 得到当前数据库用户自建表
2012-06-12 12:19 943select * from sysobjects whe ... -
解决sqlserver 除数为0 报错
2012-06-12 02:50 2548select 1/0 会报除数为0的错误,解决方法 s ... -
sqlserver 日期操作函数
2012-06-01 12:56 1453SQLServer时间日期函数详解,SQLServer,时 ... -
sqlserver 几种常见分页
2012-05-30 16:40 1271转自CSDN http://topic.csdn.net/u/ ... -
sqlserver 几个分页存储过程
2012-05-25 17:16 1395--使用系统存储过程实现的通用分页存储过程(转自邹建) ... -
sqlserver 四舍五入保留二位小数
2012-05-24 11:31 9309select cast(round(12.5,2) ... -
mssql T-sql简单总结
2012-05-17 16:36 1206一、基础 1、说明: ...
相关推荐
bulk insert导入数据,可以方便的将大数据量的数据快速导入
Entity Farmework扩展方法,批量添加(BulkInsert)。
Bulk Insert 批量操作数据库类,使用SqlBulkCopy将DataTable中的数据批量插入数据库中,若源数据集属性与目标表属性字段不一致可额外进行映射
SQL SERVER BULK INSERT用法
使用BULK INSERT大批量导入数据 SQLSERVER,需要的朋友可以参考下。
kettle9.1(PDI)连接elasticsearch7.13.2,使用时,直接将原kettle目录下-->plugin-->elasticsearch-bulk-insert-plugin下的文件删除,将该压缩包下的内容解压,放在该目录即可
ETL工具kettle7.1抽取数据目前不支持elasticsearch 2.X以上版本,如果想要支持elasticsearch 6.X以上版本,必须替换elasticsearch-bulk-insert-plugin插件,该资源提供该插件的替换。 具体步骤为在spoon kettle\data-...
Gorm Bulk Insert是一个使用实现批量插入/更新Gorm Bulk Insert的库。 目的 保存批量记录 安装 $ go get github.com/sunary/gorm-bulk-insert 这个库依赖于 gorm,除非你已经安装了 gorm,否则下面的命令也是必要的...
测试数据库速度sql静态预编译bulk insert方法
sqlserver 数据表导入导出文本文件 qq:292258449 sqlserver 数据表导入导出文本文件
BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中。 语法: BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' } WITH ( [ BATCHSIZE [ = batch_size ] ], [ ...
Gorm Bulk Insert是一个使用实现批量插入的库。 只需传递一片结构即可执行批量插入,就像您定期使用gorm一样。 目的 当在数据库中保存大量记录时,一次插入-而不是一个接一个地插入-可以显着提高性能。 这被广泛称为...
kettle 支持elasticsearch7.x 批量上传的插件,减压后放到data-integration\plugins 目录下即可
EntityFramework.BulkInsert 从Codeplex站点上的原始版本更新了EntityFramework.BulkInsert的端口。 这不是我的原始项目,而是继续进行并添加较小的更新和支持。 原始文件托管在Codeplex上,但后来被删除了。 从那时...
上午在找Bulk Insert的资料看,还转了一篇。不巧今天下午就用上了,我遇到的需求是导出表A中的N个字段,然后导入到表B的N个字段当中。