sql server 2005 T-SQL BULK INSERT (Transact-SQL)

以用户指定的格式将数据文件导入数据库表或视图。

 Transact-SQL 语法约定

BULK INSERT 
[ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
(
[ [ , ] BATCHSIZE = batch_size ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ [ , ] DATAFILETYPE =
{ 'char' | 'native'| 'widechar' | 'widenative' } ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
[ [ , ] LASTROW = last_row ]
[ [ , ] MAXERRORS = max_errors ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] ROWS_PER_BATCH = rows_per_batch ]
[ [ , ] ROWTERMINATOR = 'row_terminator' ]
[ [ , ] TABLOCK ]
[ [ , ] ERRORFILE = 'file_name' ]
)]
database_name

包含指定表或视图的数据库的名称。如果未指定,则默认为当前数据库。

schema_name

表或视图架构的名称。如果用户执行大容量导入操作的默认架构为指定表或视图的架构,则 schema_name 是可选的。如果未指定 schema 并且用户执行大容量导入操作的默认架构与指定表或视图的架构不同,则 SQL Server 将返回一条错误消息,同时取消大容量导入操作。

table_name

要将数据大容量导入其中的表或视图的名称。只能使用其所有列均引用相同基表的视图。有关向视图中加载数据时有哪些限制的详细信息,请参阅 INSERT (Transact-SQL)。

' data_file '

数据文件的完整路径,该数据文件包含要导入到指定表或视图中的数据。使用 BULK INSERT 可以从磁盘(包括网络、软盘、硬盘等)导入数据。

data_file 必须基于运行 SQL Server 的服务器指定有效路径。如果 data_file 为远程文件,则指定通用命名约定 (UNC) 名称。

BATCHSIZE = batch_size

指定批处理中的行数。每个批处理作为一个事务复制至服务器。如果复制操作失败,则 SQL Server 提交或回滚每个批处理的事务。默认情况下,指定数据文件中的所有数据为一个批处理。

有关详细信息,请参阅管理大容量导入的批处理。

CHECK_CONSTRAINTS

指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且在此操作之后表的约束将标记为不可信。

注意:
始终强制使用 UNIQUE、PRIMARY KEY 和 NOT NULL 约束。

有时您必须检查整个表中的约束。如果在大容量导入操作之前表不为空,则重新验证约束的代价可能会超出对增量数据应用 CHECK 约束的代价。

当输入数据包含违反约束的行时,您可能希望禁用约束(默认行为)。禁用 CHECK 约束后,您可以导入数据并使用 Transact-SQL 语句删除无效数据。

注意:
MAXERRORS 选项不适用于约束检查。
注意:
在 SQL Server 2005 中,BULK INSERT 强制执行新数据验证和数据检查,如果对某个数据文件中的无效数据执行这些操作,则可能导致现有脚本失败。

有关详细信息,请参阅通过大容量导入操作控制约束检查。

CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' }

指定该数据文件中数据的代码页。仅当数据含有字符值大于 127 或小于 32 的 char、varchar 或 text 列时,CODEPAGE 才适用。

CODEPAGE 值 说明

ACP

char、varchar 或 text 数据类型的列从 ANSI/Microsoft Windows 代码页 (ISO 1252) 转换为 SQL Server 代码页。

OEM(默认值)

char、varchar 或 text 数据类型的列从系统 OEM 代码页转换为 SQL Server 代码页。

RAW

不进行从一个代码页到另一个代码页的转换;这是最快的选项。

code_page

特定的代码页码,例如 850。

有关详细信息,请参阅在不同排序规则间复制数据。

DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }

指定 BULK INSERT 使用指定的数据文件类型值执行导入操作。

DATAFILETYPE 值 所有数据都表示为:

char(默认值)

字符格式。

有关详细信息,请参阅使用字符格式导入或导出数据。

本机

本机(数据库)数据类型。通过使用 bcp 实用工具从 SQL Server 大容量导入数据来创建本机数据文件。

与 char 值相比,本机值提供更高的性能。

有关详细信息,请参阅使用本机格式导入或导出数据。

widechar

Unicode 字符。

有关详细信息,请参阅使用 Unicode 字符格式导入或导出数据。

widenative

本机(数据库)数据类型,除了 char、varchar 和 text 列以外,列中的数据均被存储为 Unicode。通过使用 bcp 实用工具从 SQL Server 大容量导入数据来创建 widenative 数据文件。

与 widechar 相比,widenative 值可以提供更高的性能。如果数据文件包含 ANSI 扩展字符,则指定 widenative。

有关详细信息,请参阅使用 Unicode 本机格式导入或导出数据。

FIELDTERMINATOR = 'field_terminator'

指定要用于 char 和 widechar 数据文件的字段终止符。默认的字段终止符是 \t(制表符)。有关详细信息,请参阅指定字段终止符和行终止符。

FIRSTROW = first_row

指定要加载的第一行的行号。默认值是指定数据文件中的第一行。

注意:
FIRSTROW 属性不可用于跳过列标题。跳过行时,SQL Server 数据库引擎只考虑字段终止符,而不考虑所跳过行的字段中的数据。
FIRE_TRIGGERS

指定将在大容量导入操作期间执行目标表中定义的所有插入触发器。如果在目标表中为 INSERT 操作定义了触发器,则会对每个完成的批处理触发触发器。

如果没有指定 FIRE_TRIGGERS,将不执行任何插入触发器。

有关详细信息,请参阅导入大容量数据时控制触发器执行。

FORMATFILE = 'format_file_path'

指定一个格式化文件的完整路径。格式化文件用于说明包含存储响应的数据文件,这些存储响应是使用 bcp 实用工具在相同的表或视图中创建的。在下列情况下应使用格式化文件:

  • 数据文件包含的列多于或少于表或视图包含的列。
  • 列的顺序不同。
  • 列分隔符发生变化。
  • 数据格式有其他更改。通常,使用 bcp 实用工具创建格式化文件并根据需要用文本编辑器进行修改。有关详细信息,请参阅bcp 实用工具。
KEEPIDENTITY

指定导入数据文件中的标识值用于标识列。如果没有指定 KEEPIDENTITY,则此列的标识值可被验证但不能导入,并且 SQL Server 将根据表创建时指定的种子值和增量值自动分配一个唯一的值。如果数据文件不包含该表或视图中标识列的值,请使用一个格式化文件指定在导入数据时表或视图中的标识列被忽略;SQL Server 自动为此列分配唯一的值。有关详细信息,请参阅 DBCC CHECKIDENT (Transact-SQL)。

有关保留标识值的详细信息,请参阅大容量导入数据时保留标识值。

KEEPNULLS

指定在大容量导入操作期间空列应保留一个空值,而不插入用于列的任何默认值。有关详细信息,请参阅在大容量导入期间保留空值或使用默认值。

KILOBYTES_PER_BATCH = kilobytes_per_batch

将每个批处理中数据的近似千字节数 (KB) 指定为 kilobytes_per_batch。默认情况下,KILOBYTES_PER_BATCH 未知。

有关详细信息,请参阅管理大容量导入的批处理。

LASTROW = last_row

指定要加载的最后一行的行号。默认值为 0,表示指定数据文件中的最后一行。

MAXERRORS = max_errors

指定允许在数据中出现的最多语法错误数,超过该数量后将取消大容量导入操作。大容量导入操作未能导入的每一行都将被忽略并且计为一个错误。如果未指定 max_errors,则默认值为 10。

注意:
MAX_ERRORS 选项不适用于约束检查,也不适用于转换 money 和 bigint 数据类型。
ORDER ( { column [ ASC | DESC ] } [ ,... n ] )

指定数据文件中的数据如何排序。如果根据表中的聚集索引(如果有的话)对要导入的数据排序,则可提高大容量导入的性能。如果数据文件按不同于聚集索引键的顺序排序,或者该表没有聚集索引,则忽略 ORDER 子句。提供的列名必须是目标表中有效的列名。默认情况下,大容量插入操作假设数据文件未排序。对于优化大容量导入,SQL Server 还将验证导入的数据是否已排序。

有关详细信息,请参阅大容量导入数据时控制排序顺序。

n

指示可以指定多个列的占位符。

ROWS_PER_BATCH = rows_per_batch

指示数据文件中近似的数据行数量。

默认情况下,数据文件中所有的数据都作为单一事务发送到服务器,批处理中的行数对于查询优化器是未知的。如果指定了 ROWS_PER_BATCH(其值 > 0),则服务器将使用该值优化大容量导入操作。为 ROWS_PER_BATCH 指定的值应当与实际行数大致相同。

有关详细信息,请参阅管理大容量导入的批处理。

ROWTERMINATOR = 'row_terminator'

指定对于 char 和 widechar 数据文件要使用的行终止符。默认行终止符为 \r\n(换行符)。有关详细信息,请参阅指定字段终止符和行终止符。

TABLOCK

指定为大容量导入操作持续时间获取一个表级锁。如果表没有索引并且指定了 TABLOCK,则该表可以同时由多个客户端加载。默认情况下,锁定行为由表选项 table lock on bulk load 确定。在大容量导入操作期间持有锁会减少表上的锁争用,从而显著提高操作性能。

有关详细信息,请参阅控制大容量导入的锁定行为。

ERRORFILE = 'file_name'

指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。这些行将按原样从数据文件复制到此错误文件中。

错误文件是执行命令时创建的。如果文件已经存在则会发生错误。此外,还创建了一个扩展名为 .ERROR.txt 的控制文件。此文件引用错误文件中的每一行并提供错误诊断。纠正错误后即可加载数据。

有关为大容量导入准备数据的信息,请参阅准备用于大容量导出或大容量导入的数据。

BULK INSERT 语句能在用户定义事务中执行。对使用 BULK INSERT 语句和 BATCHSIZE 子句将数据导入表或视图(使用多个批处理)的用户定义事务执行回滚操作,将回滚所有发送给 SQL Server 的批处理。

有关何时在事务日志中记录由大容量导入执行的行插入操作的信息,请参阅在大容量导入中按最小方式记录日志的前提条件。

在 SQL Server 2005 中,BULK INSERT 将对从文件中读取的数据执行新的且更严格的数据验证和数据检查,因此,在对无效数据执行验证和检查时,可能导致现有脚本失败。例如,BULK INSERT 现在验证:

  • float 或 real 数据类型的本机表示形式是否有效。
  • Unicode 数据的字节数是否为偶数。

无效数据的形式在 SQL Server 的早期版本中可以大容量导入,但现在可能无法加载。在 SQL Server 的早期版本中,客户端尝试访问无效数据时才会出错。在大容量导入后查询数据时,由 SQL Server 2005 强制使用的更为严格的验证可最大程度地减少意外情况发生。

大容量导出或导入 SQLXML 文档

若要大容量导出或导入 SQLXML 数据,请在格式化文件中使用下列数据类型之一:

数据类型 结果

SQLCHAR 或 SQLVARYCHAR

在客户端代码页或排序规则隐含的代码页中发送数据。效果等同于在不指定格式化文件的情况下指定 DATAFILETYPE = 'char'。

SQLNCHAR 或 SQLNVARCHAR

以 Unicode 格式发送数据。效果等同于在不指定格式化文件的情况下指定 DATAFILETYPE = 'widechar'。

SQLBINARY 或 SQLVARYBIN

不经任何转换即发送数据。

字符串到小数的类型转换

在 SQL Server 2005 中,BULK INSERT 中使用的字符串到小数的类型转换与 Transact-SQL CONVERT 函数遵循相同的规则,该函数拒绝使用表示使用科学记数法的数值的字符串。因此,BULK INSERT 将此类字符串视为无效值并报告转换错误。

注意:
在 SQL Server 版本 7.0 和 SQL Server 2000 中,BULK INSERT 支持将使用科学计数法表示数值的字符串从字符串类型转换为小数类型。

若要在 SQL Server 2005 中实现此行为,请使用格式化文件将科学记数法 float 数据大容量导入小数列中。在格式化文件中,显式说明列作为 real 或 float 数据。有关这些数据类型的详细信息,请参阅 float 和 real (Transact-SQL)。

注意:
格式化文件表示 real 数据作为 SQLFLT4 数据类型,以及 float 数据作为 SQLFLT8 数据类型。有关 XML 格式化文件的详细信息,请参阅 XML 格式化文件的架构语法;有关非 XML 格式化文件的信息,请参阅使用 bcp 指定文件存储类型。

导入使用科学记数法的数值的示例

该示例使用下表:

复制代码
CREATE TABLE t_float(c1 float, c2 decimal (5,4))

用户要将数据大容量导入 t_float 表中。数据文件 C:\t_float-c.dat 包含科学记数法 float 数据,例如:

复制代码
8.0000000000000002E-28.0000000000000002E-2

但是,BULK INSERT 无法将该数据直接导入 t_float,原因是其第二列 c2 使用 decimal 数据类型。因此,必须使用格式化文件。格式化文件必须将科学记数法 float 数据映射到列 c2 的小数格式。

以下格式化文件使用 SQLFLT8 数据类型将第二个数据字段映射到第二列:

<?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="30"/>

<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/> </RECORD> <ROW>

<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/>

<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/> </ROW> </BCPFORMAT>

若要使用此格式化文件(使用文件名 C:\t_floatformat-c-xml.xml)将测试数据导入测试表中,请发出下列 Transact-SQL 语句:

复制代码
BULK INSERT bulktest..t_float
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');
GO

需要 INSERT 和 ADMINISTER BULK OPERATIONS 权限。另外,当下列各项中的一项或多项为真时,还需要 ALTER TABLE 权限:

  • 约束存在并且未指定 CHECK_CONSTRAINTS 选项。
    注意:
    禁用约束是默认行为。若要显式检查约束,请使用 CHECK_CONSTRAINTS 选项。
  • 触发器存在并且未指定 FIRE_TRIGGER 选项。
    注意:
    默认情况下,不触发触发器。若要显式触发触发器,请使用 FIRE_TRIGGER 选项。
  • 使用 KEEPIDENTITY 选项可以从数据文件中导入标识值。

安全帐户委托(模拟)

如果 SQL Server 用户使用 Windows 身份验证登录,则用户仅能读取其帐户能够访问的文件,这不依赖于 SQL Server 进程的安全配置文件。

如果在一台计算机上使用 sqlcmd 或 osql 执行 BULK INSERT 语句,将数据插入第二台计算机上的 SQL Server,同时使用 UNC 路径指定位于第三台计算机上的 data_file,则可能会收到 4861 错误。

若要解决此问题,请使用 SQL Server 身份验证并指定一个使用 SQL Server 进程帐户安全配置文件的 SQL Server 登录名,或者对 Windows 进行配置以启用安全帐户委托。有关如何使用户帐户可信以进行委托的信息,请参阅 Windows 帮助。

有关安全帐户委托以及使用 BULK INSERT 的其他安全注意事项的详细信息,请参阅使用 BULK INSERT 或 OPENROWSET(BULK...) 导入大容量数据。

A. 使用管道从文件导入数据

以下示例使用竖线 (|) 作为字段终止符,使用 |\n 作为行终止符,将订单详细信息从指定的数据文件导入 AdventureWorks.Sales.SalesOrderDetail 表中。

复制代码
BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR =' |',
ROWTERMINATOR =' |\n'
)

B. 使用 FIRE_TRIGGER 参数

以下示例指定 FIRE_TRIGGERS 参数。

复制代码
BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR =' |',
ROWTERMINATOR = ':\n',
FIRE_TRIGGERS
)

C. 使用换行符作为行终止符

以下示例将导入使用换行符作为行终止符的文件(如 UNIX 输出):

复制代码
DECLARE @bulk_cmd varchar(1000)
SET @bulk_cmd = 'BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM ''<drive>:\<path>\<filename>''
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'
EXEC(@bulk_cmd)

其他示例

以下主题提供了其他 BULK INSERT 示例:

  • 大容量导入和导出 XML 文档的示例
  • 在不同排序规则间复制数据
  • 大容量导入数据时保留标识值
  • 在大容量导入期间保留空值或使用默认值
  • 指定字段终止符和行终止符
  • 使用格式化文件大容量导入数据
  • 使用字符格式导入或导出数据
  • 使用本机格式导入或导出数据
  • 使用 Unicode 字符格式导入或导出数据
  • 使用 Unicode 本机格式导入或导出数据
  • 使用格式化文件跳过表列
  • 使用格式化文件将表列映射到数据文件字段

参考

OPENROWSET (Transact-SQL)
sp_tableoption (Transact-SQL)

其他资源

准备用于大容量导出或大容量导入的数据
用于导入或导出数据的数据格式
用来导入或导出数据的格式化文件
优化大容量导入性能
关于大容量导入和大容量导出操作
大容量导入和导出数据的方案
bcp 实用工具
使用 SQL 排序规则
使用表级锁定并行导入数据
 

转载于:https://www.cnblogs.com/czh-liyu/archive/2007/12/22/1010268.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/496979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习之路 | PTA乙级—— 1028 人口普查 (20 分)(精简)

1028 人口普查 (20 分) 某城镇进行人口普查&#xff0c;得到了全体居民的生日。现请你写个程序&#xff0c;找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的&#xff0c;但不一定是合理的——假设已知镇上没有超过 200 岁的老人&#xff0c;而今天是 2014 年 9…

图表对比详解:亚马逊、微软和谷歌云的机器学习即服务哪家强

林鳞 编译自 KDnuggets量子位 出品 | 公众号 QbitAI对于大多数公司来说&#xff0c;机器学习是一项复杂而伤神的工作&#xff0c;花销大、对人才要求高。机器学习即服务针对这个痛点应运而生。什么是“机器学习即服务”机器学习即服务&#xff08;Machine learning as a servic…

如何阅读一本书~阅读的层次

第一层&#xff1a;基础阅读 摆脱了文盲状态&#xff0c;已经开始认识字了。 阅读者的问题是&#xff1a;“这个句子在说什么&#xff1f;” 第二层&#xff1a;检视阅读 在一定的时间内&#xff0c;抓出一本书的重点 阅读者的问题是&#xff1a;“这本书在谈什么&#xff…

tar 命令详解

tar 命令 [rootlinux ~]# tar [-cxtzjvfpPN] 文件与目录 .... Usage: tar [OPTION...] [FILE]... Examples: tar -cf archive.tar foo bar # Create archive.tar from files foo and bar. tar -tvf archive.tar # List all files i…

计算器

计算器 转载于:https://www.cnblogs.com/zhuboxingzbx/archive/2007/12/23/1011706.html

Wing IDE 5.0 破解之寻找注册码

来源&#xff1a;http://bbs.pediy.com/showthread.php?p1253653 一&#xff0e; 工具&#xff1a; 1. uncompyle2 2. IDA Pro 6.1 3. WingIDE 5.0本身 二&#xff0e; 工具安装 1. 安装Python2.7 2. 安装WinIDE 5.0 3. 解压uncompyle2&#xff0c;进入解压目录&#…

C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)

1029 旧键盘 (20 分) 旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字&#xff0c;请你列出肯定坏掉的那些键。 输入格式&#xff1a; 输入在 2 行中分别给出应该输入的文字、以及…

深度|麦肯锡176页报告!解读数字中国领先全球的秘密

来源&#xff1a; 前瞻产业研究院2017年12月4日&#xff0c;麦肯锡发布了长达176页的中国数字经济报告。报告显示&#xff0c;中国电子商务&#xff08;2016年交易额占全球40%&#xff09;和数字支付&#xff08;2016年个人消费交易额交易额7900亿美元&#xff0c;是美国的11倍…

浅谈Springboot默认logger函数的使用

目录 前言1. logger日志2. 补充 前言 原先写过一篇logger日志函数的总结&#xff0c;不同的引用来源&#xff1a;java常见log日志的使用方法详细解析 但是为了不引入依赖包&#xff0c;更好的直接使用&#xff0c;总结了如下博文 1. logger日志 Spring Boot使用Spring框架中…

C++学习之路 | PTA乙级—— 1030 完美数列 (25 分)(精简)

1030 完美数列 (25 分) 给定一个正整数数列&#xff0c;和正整数 p&#xff0c;设这个数列中的最大值是 M&#xff0c;最小值是 m&#xff0c;如果 M≤mp&#xff0c;则称这个数列是完美数列。 现在给定参数 p 和一些正整数&#xff0c;请你从中选择尽可能多的数构成一个完美数…

find 和 xargs 和 locate

Linux 中 find 常见用法示例&#xff1a;http://blog.csdn.net/freeking101/article/details/51203183 1. find 命令选项。 find 命令的一般形式为&#xff1a;find pathname -options [-print -exec -ok] find 命令的参数&#xff1a; pathname find 命令所查找的目录路径。…

InfoPath中的Rich Text Box中如何加“回车”

InfoPath中的Rich Text Box中实现换行的方法&#xff1a; InfoPath中的Rich Text Box的内容使用的是XHtml的格式&#xff0c;所以"\n"格式内容是不会表现出来的。 如果我们需要在Rich Text Box中添加两行内容的话&#xff0c;我们可以用下面的代码。 X…

用互联网大脑架构预测2018年四个科技发展趋势

作者&#xff1a;互联网进化论作者&#xff0c;刘锋博士从本世纪处开始&#xff0c;随着人工智能&#xff0c;物联网&#xff0c;大数据&#xff0c;云计算&#xff0c;机器人&#xff0c;虚拟现实&#xff0c;工业互联网等科学技术的蓬勃发展&#xff0c;互联网类脑智能巨系统…

Python编程从入门到实践~文件读取

#读取整个文件 filename ./data/read.log with open(filename, r, encodingutf-8) as file_object:contents file_object.read()print(contents)#逐行读取 filename ./data/read.log with open(filename, r, encodingutf-8) as file_object:for line in file_object:print(l…

C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)

1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#…

利用DAAB 获取存储过程返回值的方法

方法一 publicstaticAdoHelper helper AdoHelper.CreateHelper("sqlDA"); publicstaticstringcs WebConfigurationManager.AppSettings["SqlServerConnectionString"]; protectedvoidPage_Load(objectsender, EventArgs e) { IDataP…

Linux-----diff命令

Linux 基础命令――比较两个文件内容的不同 语法]: diff [参数] 文件1 文件2 [说明]: 本命令比较两个文本文件&#xff0c;将不同的行列出来 -b 将一串空格或TAB 转换成一个空格或TAB -e 生成一个编辑角本&#xff0c;作为ex 或ed 的输入可将文件1 转换成文件2 [例子]: diff …

骗子、假先知们一夜暴富背后:区块链是回归互联网本来意义的唯一希望|深度

文章转载于微信公众号机器之能&#xff08;ID&#xff1a;almosthuman2017&#xff09;来源&#xff1a;纽约时报杂志 编译&#xff1a;张震、Edison、Rik“编者按”&#xff1a;纽约时报的这篇区块链文章探讨到核心的问题了&#xff0c;互联网应用层分布式架构&#xff08;区块…

Python编程从入门到实践~文件写入

#写入文件 filename ./data/programming.log with open(filename, w) as file_object:file_object.write(I love programming.\n)file_object.write(I love creating new games.\n)#附加到文件 filename ./data/programming.log with open(filename, a) as file_object:file_…