原文:数据仓库之抽取数据: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万+

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

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

    原文:数据仓库之抽取数据:通过openrowset执行存储过程 在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进 ...

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

    原文:数据仓库之抽取数据:通过bcp命令行导入数据 在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后 ...

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

    MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2 ...

  4. SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等

    在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面 ...

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

    Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...

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

    环境:OEL 5.7 + Oracle 10.2.0.5 RAC 需求:实验在Oracle 10g环境使用amdu抽取数据库文件 本文主要目的是介绍3个知识点: 1.使amdu可以在oracle 10 ...

  7. 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成

    孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...

  8. 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数

    孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...

  9. 用openrowset函数操作远程数据库

    OPENROWSET 包含访问 OLE DB 数据源中的远程数据所需的全部连接信息.当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的.特殊的 ...

随机推荐

  1. 关于Flutter启动项目白屏,报错[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(58)] Failed to setup Skia Gr context.问题的解决方案

    首先,环境如下: 1.系统:windows10 64位   Android SDK version: 28.0.3   Flutter SDK: v1.5.4-hotfix.2   模拟器: 网易Mu ...

  2. Windows 自动定时执行任务的方法

    windows 自动定时执行任务的几种实现方法   Task Schedul Windows自动定时执行任务,常见的方法有三种: Windows 任务计划程序 Windows Service SQL ...

  3. hibernate的各种查询

    Hibernate Query Language(HQL)Criteria QueryNative SQL下面对其分别进行解释select子句:有时并不需要取得对象的所有属性,这时可以使用select ...

  4. mysql数据库分库分表(Sharding)(转)

    mysql数据库切分 前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制.一旦数据库过于庞大,尤其是当写入过于频繁,非常难由一台主机支撑的时候,我们还是会面临到扩展瓶 ...

  5. OpenNebula概述

    OpenNebula概述 OpenNebula是专门为云计算打造的开源系统,用户可以使用Xen.KVM.VMware等虚拟化软件一起打造企业云.利用OpenNebula可以轻松构建私有云.混合云.公开 ...

  6. jumperserver的简单使用

      用户管理:这里的用户说的是登录跳板机的账号,通过这个账号可以登录跳板机 资产管理: 资产管理/管理用户:有权限对最终的目标服务器进行管理的用户,可以单独创建,也可以直接使用root用户 资产管理/ ...

  7. Visual studio 正在从以下位置加载符号:Microsoft符号服务器 尝试取消禁用后续符号加载

    正在从以下位置加载符号:Microsoft符号服务器   尝试取消禁用后续符号加载 进入VS---工具---选项----调试----符号,看右边有个“Microsoft符号服务器”,将前面的勾去掉,( ...

  8. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_17-认证接口开发-申请令牌测试

    远程 调用Spring Security来申请令牌,然后把申请到令牌存储到redis里面 cookieMaxAge: ‐1   -1表示浏览器一关闭cookie就失效. 测试远程申请令牌 TestCl ...

  9. python检测文件的MD值

    使用hashlib模块,可对文件MD5一致性加密验证: #python 检测文件MD5值 #python version 2.6 import hashlib import os,sys #简单的测试 ...

  10. thymeleaf中switch case多出一个空行

    以下是<thymeleaf3.0.5中文参考手册.pdf>中的代码,官方代码没有具体去查询. <div th:switch="${user.role}"> ...