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

使用 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

时间: 2024-12-07 15:01:19

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

Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据

PRM 全称为ParnassusData Recovery Manager ,由 诗檀软件自主研发,拥有独立的软件著作权. PRM可以独立于Oracle软件运行,直接从Oracle数据文件中抽取表上的数据. 当以下几种场景中,都可以用上PRM: 无备份或者备份不可用情况下,数据表被意外truncate掉或者DROP掉 由于数据库损坏,导致的数据打不开 无法OPEN 数据块存在损坏,Oracle无法读取出数据 数据文件存在损坏,或者数据文件头信息不一致 等等 以上这些问题中,用户均可以考虑使用PR

将字符串添加到指定的文件中去 AppendAllText ;判断指定路径的文件是否存在File.Exists(Path)

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { static void Main(string[] args) { string path = @"F:\1.txt"; //指定文件的路径 //---------------------------------------------- //.Exi

大数据:Spark Shuffle(一)ShuffleWrite:Executor如何将Shuffle的结果进行归并写到数据文件中去

1. 前序 关于Executor如何运行算子,请参考前面博文:大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子,当Executor进行reduce运算的时候,生成运算结果的临时Shuffle数据,并保存在磁盘中,被最后的Action算子调用,而这个阶段就是在ShuffleMapTask里执行的. 前面博客中也提到了,用什么ShuffleWrite是由ShuffleHandler来决定的,在这篇博客里主要介绍最常见的SortShuffleWri

查看Oracle表中的指定记录在数据文件中的位置

查看Oracle表中的指定记录位置select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid,       dbms_rowid.rowid_object(rowid) object_id,              dbms_rowid.rowid_relative_fno(rowid) file_id,              dbms_rowid.rowid_block_number(rowid) b

sqlplus中怎么将你所有的操作和结果记录保存到你指定的文件中

[在sqlplus的操作中,很多时候我们都想把自己的写的sql语句和修改日志或者结果信息做记录] [首先]肯定要正常连接到oralce数据库. [然后] 你用你指定的用户登录到oralce数据库之后,在sqlplus工作区 SQL>spool d:\oracle.txt; 如上命令,关键字spool之后为你想将你接下来要做的所有操作保存在什么地方以及要保存成什么格式. ---- 在你不打算再对数据库操作,或者说你打算关闭sqlplus客户端工具的时候,在关闭spool,然后在你刚才设定的路径中你

打包一个Docker镜像,让你的好友加载开启一个容器,并且每隔一秒输出hello,world到指定的文件中

一.两个脚本代码 Dockerfile 1 FROM bash 2 COPY . /usr/herui/ 3 WORKDIR /usr/herui/ 4 CMD [ "sh", "hello_world.sh" ] hello_world.sh 1 #!/bin/bash 2 while true 3 do 4 echo 'hello world!' >> /usr/herui/hello_world.log 5 sleep 1 6 done 二.打包成

MySQL获得指定数据表中auto_increment自增id值的方法及实例

http://kb.cnblogs.com/a/2357592/很多情况下,我们要提前用到当前某个表的auto_increment自增列id,可以通过执行sql语句来查询到这个id值. show table status where name=’表名’ 或者 show table status like ‘表名’ 然后从查询到的结果集中获得auto_increment的值 代码实例:<?php mysql_connect("localhost","root",

简单的读取文件内容并写到另一个指定的文件中

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.FileWriter; import java.io.BufferedWriter; public class FileLineRead { /** * @ClassName FileLineRead * @author javen * @date May 29, 2015 10:48:35 AM

【译】 AWK教程指南 3计算并打印文件中指定的字段数据

awk 处理数据时,它会自动从数据文件中一次读取一条记录,并会将该记录切分成一个个的字段:程序中可使用 $1, $2,... 直接取得各个字段的内容.这个特色让使用者易于用 awk 编写 reformatter 来改变数据格式. 范例:以数据文件 emp.dat 为例,计算每人应发工资并打印报表. 分析:awk 会自行一次读入一条记录,故程序中仅需告诉 awk 如何处理所读入的数据行. 执行如下命令:($ 表UNIX命令行上的提示符)  $ awk '{ print $2, $3 * $4 }'