使用 bcp 指定数据文件中的前缀长度

简介:

以本机格式将数据大容量导出到数据文件时,为使文件存储空间最为紧凑,bcp 命令将在每个字段前面使用一个或多个字符来指示字段的长度。 这些字符称为“长度前缀字符”。

 

bcp 的前缀长度提示


如果某个交互式 bcp 命令包含不带格式化文件开关 (-f) 或数据格式开关(-n、-c、-w 或 -N)的 in 或 out 选项,则该命令会提示输入每个数据字段的前缀长度,如下所示:

 

Enter prefix length of field <field_name> [<default>]:

 

如果指定 0,则 bcp 提示输入字段的长度(对于字符数据类型)或字段终止符(对于本机非字符类型)。

 

注意

在交互指定 bcp 命令中的所有字段后,该命令会提示您将自己对每个字段的响应保存在一个非 XML 格式化文件中。

 

前缀长度概述


若要存储字段的前缀长度,您需要有足够的字节来表示字段的最大长度。 另外,所需的字节数还取决于文件存储类型、列是否可以为 Null 以及数据是以本机格式还是字符格式存储在数据文件中。 例如,text 或 image 数据类型需要四个前缀字符存储字段长度,而 varchar 数据类型需要两个字符。 在数据文件中,这些长度前缀字符以 SQL Server 的内部二进制数据格式存储。

 

重要提示

使用本机格式时,请使用长度前缀而不要使用字段终止符。 本机格式数据可能会与终止符相冲突,因为本机格式数据文件是以 SQL Server 的内部二进制数据格式存储的。

 

大容量导出时的前缀长度


注意

导出字段时前缀长度提示中提供的默认值指明的是该字段的最有效前缀长度。

 

以空字段表示 Null 值。 若要指示字段为空(表示 NULL),字段前缀应包含值 -1,也就是说,字段前缀至少需要 1 个字节。 请注意,如果某个 SQL Server 表列允许 Null 值,则根据文件存储类型的不同,该列需要的前缀长度为 1 或更大。

 

在大容量导出数据并以本机数据类型或字符格式存储数据时,请使用下表中显示的前缀长度。

 

SQL Server

数据类型

本机格式

非 Null

本机格式

NULL

字符格式

NOT NULL

字符格式

NULL

char

2

2

2

2

varchar

2

2

2

2

nchar

2

2

2

2

nvarchar

2

2

2

2

text

4

4

4

4

ntext

4

4

4

4

binary

2

2

2

2

varbinary

2

2

2

2

image

4

4

4

4

datetime

0

1

0

1

smalldatetime

0

1

0

1

decimal

1

1

1

1

numeric

1

1

1

1

float

0

1

0

1

real

0

1

0

1

int

0

1

0

1

bigint

0

1

0

1

smallint

0

1

0

1

tinyint

0

1

0

1

money

0

1

0

1

smallmoney

0

1

0

1

bit

0

1

0

1

uniqueidentifier

1

1

0

1

timestamp

1

1

1

1

varchar(max)

8

8

8

8

varbinary(max)

8

8

8

8

UDT(用户定义的数据类型)

8

8

8

8

XML

8

8

8

8

 

在 SQL Server 的将来版本中将删除 ntext、text 和 image 数据类型。 请避免在新开发工作中使用这些数据类型,并考虑修改当前使用这些数据类型的应用程序。 请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。

 

大容量导入时的前缀长度


大容量导入数据时,前缀长度为最初创建数据文件时指定的值。 如果数据文件不是通过 bcp 命令创建的,则可能不存在长度前缀字符。 在这种情况下,将前缀长度指定为 0。

 

注意

若要在不是使用 bcp 创建的数据文件中指定前缀长度,请使用本主题前面的大容量导出时的前缀长度中提供的长度。


参考:

https://technet.microsoft.com/zh-CN/library/ms190779



















本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1628109,如需转载请自行联系原作者

相关文章
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
Idea在debug时打上断点没有用 Skipped breakpoint at ... because it happened inside debugger evaluation
Idea在debug时打上断点没有用 Skipped breakpoint at ... because it happened inside debugger evaluation
2959 0
|
消息中间件 监控 数据库
Camunda BPM Run下载(7.20)
Camunda BPM Run下载(7.20)
530 1
|
监控 Java 应用服务中间件
【微服务系列笔记】Sentinel入门-微服务保护
Sentinel是一个开源的分布式系统和应用程序的运维监控平台。它提供了实时数据收集、可视化、告警和自动化响应等功能,帮助用户监控和管理复杂的IT环境。本文简单介绍了微服务保护以及常见雪崩问题,解决方案。以及利用sentinel进行入门案例。
472 3
|
架构师 Serverless 程序员
Forrester Wave™ 扫盲贴
Forrester Wave™ 是为考虑采购技术解决方案的买方提供的专业参考调研报告,面向成熟技术市场。
2580 96
Forrester Wave™ 扫盲贴
|
编解码 移动开发 小程序
Flutter屏幕适配
目前移动端的设备已经非常多,并且不同的设备手机屏幕也不相同。 目前做移动端开发都要针对不同的设备进行一定的适配,无论是移动原生开发、小程序、H5页面。 Flutter中如何针对不同的手机屏幕来进行适配呢?我们一起来聊聊这个话题。
1329 0
Flutter屏幕适配
|
存储 Android开发 iOS开发
指导:大量联系人电话号码怎么导入iphone苹果手机通讯录?
想有没有简单的办法能帮我来快速批量操作完成,在网上查了很多方法都很复杂,搞了半天精疲力尽,在我快要放弃的时候遇到了一个网上常见简便的软件工具,金芝号码提取导入助手。它很轻松就解决了我的问题:大量联系人电话号码怎么导入iphone苹果手机通讯录?当然了安卓手机也是可以导入的,通用。我写了一个详细的图文教程。
3453 0
指导:大量联系人电话号码怎么导入iphone苹果手机通讯录?
|
SQL NoSQL Oracle
正版数据库连接工具,DBeaver的安装与配置使用
正版数据库连接工具,DBeaver的安装与配置使用
正版数据库连接工具,DBeaver的安装与配置使用
|
开发框架 运维 安全
浅谈组装式应用
在数字化转型的浪潮中,企业数字化转型在实施过程中所面临的问题和挑战非常的明显,包括 - 交付成本高、质量低、客户满意度低 - 代码难以复用 、无法形成有效沉淀 - 无法形成行业竞争力 、不可持续等等 在这种情况下,如何降低交付成本,提升交付效率,提高客户满意度,并且实现可持续的能力沉淀,成为数字化转型实施者的当务之急。
6908 14
浅谈组装式应用
|
BI API 数据安全/隐私保护
自建API接口管理平台的产品脑图和解决方案
自建API接口管理平台的产品脑图和解决方案