数据仓库之抽取数据:openrowset函数带bulk操作符的用法

原文:数据仓库之抽取数据:openrowset函数带bulk操作符的用法

在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。

目标数据库是sql server,通过openrowset函数带bulk操作符的用法,导入、导出、更新数据。

带bulk操作符的方式相对于其他方式来说,速度更快。

使用方法:

第1种用法:

openrowset

(

bulk 要加载结果集的文件名,

formatfile = 格式化文件名,

bulk选项

)

第2种用法:

openrowset

(

bulk 文件名,

SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB

)

1、开启即席查询


  1. --修改高级参数
  2. sp_configure ‘show advanced options‘,1
  3. go
  4. --允许即席分布式查询
  5. sp_configure ‘Ad Hoc Distributed Queries‘,1
  6. go
  7. --如果配置的值不在合理范围(在最小值最大值范围内),那么可以强制覆盖
  8. reconfigure with override  
  9. go

2、第1种用法,把bcp导出的数据,导入数据库中

具体导入数据时,可以先用bcp把表的格式文件倒出来,然后在把数据导进去,这样按照格式自动转化。


  1. select *
  2. from
  3. openrowset(bulk ‘c:\calendar.txt‘, --要读取的文件路径和名称
  4. formatfile=‘c:\calendar.fmt‘, --格式化文件的路径和名称
  5. firstrow = 1, --要载入的第一行
  6. --lastrow = 1000, --要载入的最后一行,此值必须大于firstrow
  7. maxerrors = 10, --在加载失败之前加载操作中最大的错误数
  8. errorfile =‘c:\calendar_error.txt‘, --存放错误的文件
  9. rows_per_batch = 100 --每个批处理导入的行数
  10. ) as calendar

3、第2种用法


  1. select 1,
  2. BulkColumn --这个是从数据源获取的,要插入的列,默认的列名
  3. from openrowset(
  4. BULK ‘c:\helloworld.class‘,--指定文件路劲,这里是本地路径
  5. SINGLE_BLOB --指定二进制数据是SINGLE_BLOB
  6. --指定文本是SINGLE_CLOB、SINGLE_NCLOB
  7. )X --必须要别名
  8. select 1,
  9. binColumn --引用后面定义的列别名
  10. from openrowset(
  11. BULK ‘c:\Katongxiar01.jpg‘, --指定文件路劲,这里是本地路径
  12. SINGLE_BLOB --指定二进制数据是SINGLE_BLOB
  13. --指定文本是SINGLE_CLOB、SINGLE_NCLOB
  14. )X(binColumn) --这里还定义了列的别名

把bmp文件直接更新到字段pic中,直接从txt文件查询数据作为1列显示:


  1. update t
  2. set pic = (
  3. select BulkColumn
  4. from openrowset(bulk ‘c:\dwhj.bmp‘,
  5. SINGLE_BLOB) AS X --一定不要忘了定义别名
  6. select 1,
  7. binColumn --引用后面定义的列别名
  8. from openrowset(
  9. BULK ‘c:\calendar.txt‘, --指定文件路劲,这里是本地路径
  10. SINGLE_CLOB --指定二进制数据是SINGLE_BLOB
  11. --指定文本是SINGLE_CLOB、SINGLE_NCLOB
  12. )X(binColumn) --这里还定义了列的别名


不想长大啊

发布了416 篇原创文章 · 获赞 135 · 访问量 94万+

他的留言板
关注

原文地址:https://www.cnblogs.com/lonelyxmas/p/12019921.html

时间: 2024-09-28 16:16:09

数据仓库之抽取数据:openrowset函数带bulk操作符的用法的相关文章

数据仓库之抽取数据:通过openrowset执行存储过程

原文:数据仓库之抽取数据:通过openrowset执行存储过程 在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中. 目标数据库是sql server,通过openrowset函数调用存储过程,但是存储过程中不能带参数. 1.开启即席查询 --修改高级参数 sp_configure 'show advanced options',1 go --允许即席分布式查询

数据仓库之抽取数据:通过bcp命令行导入数据

原文:数据仓库之抽取数据:通过bcp命令行导入数据 在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中. 目标数据库是sql server,通过bcp命令行导入数据.bcp方式相对于其他方式来说,速度更快,是做了优化的. 以下为bcp命令行常用的参数,注意大小写: -c  以char作为存储类型 -w  和-c类似,只有当使用unicode字符集拷贝数据时使用n

MySQL数据类型转换函数CAST与CONVERT的用法

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2.CONVERT(value, type) 就是CONVERT(xxx,类型) 但是要特别注意,可以转换的数据类型是有限制的.这个类型可以是以下值其中的一个: 二进制,同带binary前缀的效果 : BINARY字符型,可带参数 : CHAR()日期 : DATE时间: TIME日期时间型 : DA

字符串函数、数据类型转换函数、连接查询

1.字符串函数 --将身高的平均值转化为asc码 select ASCII(AVG(shengao))from sg --将体重的最大值转化为字符型 select CHAR (MAX(tizhong))from sg --返回一个字符串的四位soundex码 select SOUNDEX ('lskd') --比较两个soundex码有几位相同 select DIFFERENCE ('dgghsf','dfs') --打印空格 select SPACE (11) select 'a'+SPACE

抽取、转换和装载介绍(五)抽取数据

抽取和提交数据虽然也很重要,但是只是传输和装载数据而已. 数据的清洗和归一化是ETL系统为数据增值的步骤,实际上改变了数据. 子系统4--数据清洗系统 主要用于修正脏数据,同时又希望数据仓库提供该数据的准确描述. 数据清洗的目标之一是提供一个用于数据清洗的综合架构,捕捉与数据质量相关的事件,同时在数据仓库中对数据质量进行度量并最终加以控制. 这一子系统的目标应当包括: 对数据质量问题的早期诊断和鉴别分类(早期诊断) 让源系统的集成工作提供更优质的数据(更优数据) 具有为ETL过程中遇到的数据错误

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssql 的实现 NEWID() 跟rand()  1 5. newid()与rand()的区别 2 6. NEWID() 2 7. 参考 2 1. 应用场景 并发测试 2. 随机抽取数据原理 原理是 循环所有的ID/记录,附加随机函数字段,然后排序as 这个字段.. 3. 常用的实现方法:::数据库随机

用openrowset函数操作远程数据库

OPENROWSET 包含访问 OLE DB 数据源中的远程数据所需的全部连接信息.当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的.特殊的方法.可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数.依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT.UPDATE 或 DELETE 语句的目标表.尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个. 语法

Oracle 10g使用amdu抽取数据文件

环境:OEL 5.7 + Oracle 10.2.0.5 RAC 需求:实验在Oracle 10g环境使用amdu抽取数据库文件 本文主要目的是介绍3个知识点: 1.使amdu可以在oracle 10g环境中使用 2.使kfed可以在oracle 10g环境中使用 3.amdu如何抽取损坏的ASM磁盘组数据 1.使amdu可以在oracle 10g环境中使用 在Oracle 10g环境,并没有自带amdu工具,需要自行去下载: 具体可以参考MOS文档: Placeholder for AMDU

大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)

背景 接着上个文章数据仓库简述,想写一篇数据仓库常用模型的文章,但是自己对数据仓库模型的理解程度和建设架构并没有下面这个技术专家理解的深刻,并且自己去组织语言,可能会有不准确的地方,怕影响大家对数据仓库建模的理解,数据仓库属于一个工程学科,在设计上要体验出工程严谨性,所以这次向大家推荐这篇文章,毕竟IBM在数据仓库和数据集市方面已经做得很成熟了,已经有成型的商业数据仓库组件,这篇文章写的很好,可以让大家很好的理解数据仓库. 版权 作者 周三保([email protected]) IBM 软件部