要使用OPENROWSET首先要开启一个configure选项

sp_configure ‘show advanced options’, 1;
GO
RECONFIGURE;
GO
sp_configure ‘Ad Hoc Distributed Queries’, 1; --Switch on specific functionality
GO
RECONFIGURE;
GO

OPENROWSET可以把整个flatfile读取成二进制数据流,这个时候你需要自己再用cast+substring的方法去截取数据成为栏位

SELECT *, CAST(BulkColumn as varchar(max)) FROM OPENROWSET(BULK N'D:\Test.txt', SINGLE_BLOB) AS Document;

另一种做法是用formatfile,这样select出来的数据栏位已经按formatfile定义好的格式显示出来

SELECT a.* FROM OPENROWSET( BULK 'D:\Test.txt', FORMATFILE = 'D:\test.fmt') AS a;

那formatfile怎么生成的呢?

bcp JerryDB.dbo.ssis_merge_test format nul -c -f D:\test.fmt -S JERRYCHENLAP\MSSQLSERVER2014 -T

上面的命令行生成下面的数据到D:\test.fmt这个文件

10.0
3
1 SQLCHAR 0 24 "\t" 1 col1 ""
2 SQLCHAR 0 100 "\t" 2 col2 Chinese_PRC_CI_AS
3 SQLCHAR 0 12 "\r\n" 3 col3 ""

加个-x可以变成xml格式的

bcp JerryDB.dbo.ssis_merge_test format nul -c -x -f D:\test.fmt -S JERRYCHENLAP\MSSQLSERVER2014 -T

上面的命令行生成下面的数据到D:\test.fmt这个文件

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="24"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="100" COLLATION="Chinese_PRC_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="12"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="col1" xsi:type="SQLDATETIME"/>
<COLUMN SOURCE="2" NAME="col2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="col3" xsi:type="SQLINT"/>
</ROW>
</BCPFORMAT>

参考:

创建格式化文件

https://technet.microsoft.com/zh-cn/library/ms191516(v=sql.90).aspx

OPENROWSET (Transact-SQL)

https://msdn.microsoft.com/zh-cn/library/ms190312.aspx

使用格式化文件大容量导入数据

https://technet.microsoft.com/zh-cn/library/ms178129(SQL.90).aspx

使用OPENROWSET(BULK...)从平面文件加载数据的更多相关文章

  1. SQL Server ->> 自动创建表并从文件加载数据

    这个存储过程自动创建表并从文件加载数据. 有一点需要说明的是Excel 12.0驱动是兼容了Excel 97-2003和Excel 2007两者格式的Excel文件. CREATE PROCEDURE ...

  2. 使用Spark加载数据到SQL Server列存储表

    原文地址https://devblogs.microsoft.com/azure-sql/partitioning-on-spark-fast-loading-clustered-columnstor ...

  3. Bootstrap-Select 动态加载数据的小记

    关于前端框架系列的可以参考我我刚学Bootstrap时候写的LoT.UI http://www.cnblogs.com/dunitian/p/4822808.html#lotui bootstrap- ...

  4. winform异步加载数据到界面

    做一个学习记录. 有两个需求: 1.点击按钮,异步加载数据,不卡顿UI. 2.把获取的数据加载到gridview上面. 对于需求1,2,代码如下: public delegate void ShowD ...

  5. Ajax 加载数据 练习 自我有些迷糊了,写的大概请谅解 ^ _ ^

    查询表的显示,查询显示如果不嵌入PHP代码的话,用ajax怎么实现?   <h1>显示数据</h1> <table width="100%" bord ...

  6. 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据

    感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...

  7. 使用 jQuery Ajax 在页面滚动时从服务器加载数据

    简介 文本将演示怎么在滚动滚动条时从服务器端下载数据.用AJAX技术从服务器端加载数据有助于改善任何web应用的性能表现,因为在打开页面时,只有一屏的数据从服务器端加载了,需要更多的数据时,可以随着用 ...

  8. 向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]

    /**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...

  9. AppCan学习笔记----关闭页面listview动态加载数据

    AppCan页面关闭 AppCan 的页面是由两个HTML组成,如果要完全关闭的话需要在主HTML eg.index.html中关闭,关闭方法:appcan.window.close(-1); 管道 ...

随机推荐

  1. hasOwnProperty与isPrototypeOf

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 自动回复消息-微信公众平台开发4(asp.net)

    接着上一节的processRequest 处理函数,代码如下: /// <summary>    /// 处理微信发来的请求     /// </summary>    /// ...

  3. MySQL自动化安装(双主多从读写分离)

    shell #!/bin/bash # Create by # version 1.0 # // # # check out lockfile whether or not exist IsInput ...

  4. xcode 运行报错 Command /usr/bin/codesign failed with exit code 1

           因为更换了证书,导致在运行时报错 Command /usr/bin/codesign failed with exit code 1,查看了网上各种方法,最后发现以下两个值没有同步更新

  5. EditPlus配置[C++] [Python] [Java] 编译运行环境

    以前一直用Codeblocks写C++,eclipse写Java,再在eclipse里面集成PyDev写Python,首先无法忍受代码自动补全功能(这个功能也许你万分喜欢),也无法忍受如此重量级的ID ...

  6. 【BZOJ】【1046】/【POJ】【3613】【USACO 2007 Nov】Cow Relays 奶牛接力跑

    倍增+Floyd 题解:http://www.cnblogs.com/lmnx/archive/2012/05/03/2481217.html 神题啊= =Floyd真是博大精深…… 题目大意为求S到 ...

  7. 【BZOJ】【1202】【HNOI2005】狡猾的商人

    Orz iwtwiioi  http://www.cnblogs.com/iwtwiioi/p/3887617.html 并查集+前缀和 啊……这题应该是水题吧?但是我这个大沙茶居然一天都没想出来…… ...

  8. Leetcode#108 Convert Sorted Array to Binary Search Tree

    原题地址 对于已排序数组,二分法递归构造BST 代码: TreeNode *buildBST(vector<int> &num, int i, int j) { if (i > ...

  9. POJ 1338

    #include<iostream> #include<stdio.h> #include<iomanip> #define MAXN 100000 using n ...

  10. iOS多线程的初步研究(七)-- dispatch对象

    谈起iOS的dispatch(正式称谓是Grand Central Dispatch或GCD),不得不说这又是iOS(包括MacOSX)平台的创新,优缺点这里不讨论,只有当你使用时才能真正体会到.我们 ...