AFILETYPE [ = { ''''char'''' | ''''native''''| ''''widechar'''' | ''''widenative'''' }]] [[ , ] FIELDTERMINATOR [ = ''''field_terminator'''' ]] [[ , ] FIRSTROW [ =first_row]] [[ , ] FIRETRIGGERS [ =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 ] )] 必要参数 数据文件的位置可用data_file参数指定,但所指定的路径必须是有效路径。 数据插入的数据库位置由数据表定义或检视表来决定。如前所述,您可以指定资料表或检视表所在的数据库名称,或指定数据表或检视表的拥有者。如果您试图用 BULK INSERT 指令将数据插入检视表,只能影响检视表中 FROM 子句所参照底层资料表的其中一个。 选择性使用的参数 您可以选择性的使用列在表 24-3 的参数和关键词来修改 BULK INSERT 的执行,这些选项和 BCP 的选项很相似。 表24-3 BULK INSERT 选择性使用的参数 可选择性使用的参数 描述 BATCHSIZE =size 指定每一笔批次操作中的列数,每笔批次操作皆视为一次交易。 CHECK_CONSTRAINTS 指定检查条件约束限制,根据默认值,会忽略这些限制。 CODEPAGE [ = ''''ACP'''' | ''''OEM'''' | ''''RAW'''' | ''''code_page'''' ] 指定数据文件中的字码页,只有在数据含有char、varchar或text数据型别时,CODEPAGE 才是有用意的。 DATAFILETYPE [ = ''''char'''' | ''''native'''' | ''''widechar'''' | ''''widenative'''' ] 指定数据文件中的数据型别,默认值的型别为char,其它的选项还包括native(原生数据型别)、widenative(Unicode 字符)和widenative(和 native 原生数据型别相同,差别在char、varchar和text是以 Unicode 储存)。 FIELDTERMINATOR [ =field_term] 指定要用于char与widechar数据型别文件中的字段终止符号端子,默认值是\t(Tab 字符)。 FIRSTROW [ =first_row] 复制的第一个数据列编号,默认值为 1,表示指定数据文件中的第一个资料列。如果要跳过在数据文件中的标题信息,就可使用此参数。 FORMATFILE [ =format_file] 指定格式文件的路径。 KEEPIDENTITY 指定保留在汇入的数据文件中呈现 Identity 识别数据行的值。 KEEPNULLS 指定空的数据行应保留 Null 值。 KILOBYTES_PER_BATCH [ =number] 指定在大量复制时,每一笔批次操作的千位组(KB)近似数据数。 LASTROW [ =last_row] 指定大量复制时,插入的最后一个数据列编号。默认值为 0,表示指定数据文件的最后一个数据列。如果只想复制特定的资料列,可以使用这个选项。 MAXERRORS [ =max_errors] 指定在大量复制插入结束之前,允许发生错误的最多次数,默认值为 10。 ORDER (column[ASC | DESC] ) 指定数据在数据文件中的排序方式。 ROWS_PER_BATCH [ =rows_per_batch]] 指定每一笔批次操作的数据列数目,每一笔批次会被视为单一交易复制。根据预值,所有在数据文件夹的资料列,会被视为单一批次操作插入,执行一次认可。当您执行大量插入时,可考虑指定这个选项,以在执行批次操作时,能解除资料表锁定,允许执行其它处理程序步骤。 ROWTERMINATOR [ =row_term] 要用于char与widechar数据型别文件的数据列终止符号端子,默认值是新增行字符(\n)。 使用 BULK INSERT 现在来看看使用 BULK INSERT 陈述式的两个范例,在这两个范例中,我们将会从data.file加载数据至 Northwind 数据库的Customers数据表。 ________________________________________ 说明 BULK INSERT 陈述式只可用于将数据加载数据库,不可用于撷取数据。由于BULK INSERT 的操作模式不如 BCP 来的多,所以这里的范例会比较少。 ________________________________________ 使用下列的 T-SQL 陈述式,将数据加载数据库: BULK INSERT Northwind..Customers FROM ''''C:\data.file'''' WITH ( DATAFILETYPE = ''''char'''' ) GO 您可依需要加入更多的选项,以下的范例使用更多可选择的参数: BULK INSERT Northwind..Customers FROM ''''C:\data.file'''' WITH ( BATCHSIZE = 5, CHECK_CONSTRAINTS, DATAFILETYPE = ''''char'''', FIELDTERMINATOR = ''''\t'''', FIRSTROW = 5, LASTROW = 20, TABLOCK ) 这个陈述式只会从数据文件加载第 5 到第 20 个资料列。不管是不是默认值,字段终止符号应指定为 Tab 字符。该范例也检测大量插入过程中限制条件,并在加载过程使用数据表锁定,执行加载的交易将每 5 个数据列视为一个批次单位。 数据转换服务 数据转换服务(Data Transformation Services,DTS) 是 SQL Server Enterprise Manager 的一部份,让您可以轻松将数据汇入数据库或将数据从数据库汇出。DTS 由两种精灵组成,包括 汇出精灵 和 汇入精灵 。本节将讨论如何使用这两种精灵。 汇入精灵 您可以透过使用汇入精灵,将不同来源的数据汇入数据库。汇入精灵和 BCP 与 BULK INSERT 陈述式不同的地方在于,汇入精灵可汇入除了数据文件外其它来源的数据,以下为使用汇入精灵的步骤: 1. 在 Enterprise Manager 中,展开一个服务器群组,并且按一下想将数据汇入的服务器。从 工具 菜单,选择 精灵 ,然后展开 数据转换服务 数据夹,选择 DTS 汇入精灵 ,按一下 确定 。将出现 数据转换服务 ─ 汇入/汇出精灵 画面,如图 24-2 所示。 图24-2 「数据转换服务─汇入/汇出精灵」画面 2. 按一下 下一步 以显示 选择数据来源 画面,如图 24-3 所示。 图24-3 「选择数据来源」画面 在这里您可以从下拉式清单中选择数据来源。我们选择了图 24-3 中的 Text File 选项,您也可从下列的数据来源选项中选择: o dBase o Microsoft Access o Microsoft Data Link o Microsoft Excel o Microsoft Visual FoxPro o Other(ODBC data source) o Other OLE_DB data source o Paradox o Data files 选项的决定有部分是取决于您在安装系统时所安装的 ODBC 驱动程序,举例来说,如果安装了 Oracle ODBC 的驱动程序,清单中就会列出这个选项, 选择数据来源 画面会依照您所选择的数据来源而改变,无论选择了哪个数据来源,都需要输入档案或登入信息。 3. 按一下 下一步 以显示 选择档案格式 画面,如图 24-4 所示。这个画面只有在您选择 Text File 时才会出现,该画面允许您选择档案格式,画面中的其它选项如下: o 使用分隔符 或 使用固定字段 允许您选择汇入档案的格式,以及特定的分隔字符或字段宽度。 o 档案类型 下拉式清单允许您指定汇入档案格式为 ANSI、OEM 或 Unicode。 o 数据列分隔符 下拉式清单允许您指定汇入档案中用什么符号来结束每一个数据列。 o 文字定位项 下拉式清单用来指定哪一个字符标记要用于分隔的数据文件来限定文字。 o 起始列号 指定开始复制的数据列编号(从档案开头为 0 号算起)。 o 第一列有数据行名称 指定文字文件的第一列为数据行标题而非数据。 图24-4 「选择档案格式」画面 4. 选择 使用分隔符 ,以 {CR}{LF} 作为资料列分隔符,将 文字定位项 设成 <无> 。按一下 下一步 以显示 指定数据行分隔符 画面,如图 24-5 所示。该画面是一个指定字段分隔符的简便方法,因为您会依所选择的选项看到选择该选项后实时的画面,以决定是否选择了适当的分隔符。您可以使用 逗号 、 Tab键 、 分号 或 其它 以选择分隔符。当您选择分隔符时,数据列会在预览窗口中显示。如果您选择的是 使用固定字段 而不是 使用分隔符 ,出现的会是 固定字段的数据行位置 画面。 图24-5 「指定数据行分隔符」画面 5. 在您选取了分隔符后,按一下 下一步 进入 选择目的地 画面,如图 24-6 所示,在这个画面之下可选择将数据汇入的数据库,您必须指定 SQL Server ODBC 目的地(数据库的 ODBC 别名)、服务器与数据库。本范例中我们会指定 Northwind 数据库,在这个画面中选择是否使用 Windows 或 SQL Server 的身份验证。如果您使用 SQL Server 身份验证,必须在空格中输入 SQL Server 使用者名称和密码,SQL Server 安全性在 第三十四章 会作详细说明。如果提供的使用者名称或密码无效,可以按一下 重新整理 按钮重试。要变更其它的属性,例如安全性选项、联机逾时等等,按一下 进阶 按钮修改,不过这些属性通常不需要更改。 6. 按一下 下一步 以显示 选取来源数据表和检视表 画面,如图 24-7 所示。在这个画面中,您可以从 数据表和检视表 中的 目的地 字段,呼叫出下拉式清单,选择数据要汇入的数据表。在这里按一下 预览 按钮,可以预览数据。 全选 和 全部不选 按钮可使您选择全部的数据表或都不选择。 图24-6 「选择目的地」画面 图24-7 「选取来源资料表和检视表」画面 7. 在相同的画面中,您可以存取转换服务,此选项可在执行数据汇入时,允许数据间的转换(更改数据行等)。要执行这个项目,按一下 转换 按钮( 转换 标题下有三个点的那个按钮),进入 数据行对应与转换 对话框,如图 24-8 所示。在 数据行对应 卷标页中,可以选择 建立目的资料表 、 删除目的表中的数据表或数据列 、 附加数据列到目的数据表 ,预设为 附加数据列到目的数据表 。如果选择 建立目的数据表 ,可以使用 编辑SQL 按钮检视及修改用于建立数据表的 SQL 陈述式。 图24-8 「数据行对应与转换」对话框内的「数据行对应」卷标页 8. 选择 转换 卷标页检视转换选项,如图 24-9 所示。在此标签页中,可选择 直接将来源数据行复制到目的数据行 或 在复制到目的地时进行信息转换 。 转换服务 的精确度转换可以在这里指定(如从 16-bit 到 32-bit;从 32-bit 到 16-bit)。NULL 值的转换也可在这里执行(如从 NOT NULL 到 NULL;从 NULL 到 NOT NULL)。 图24-9 「数据行对应与转换」对话框内的「转换」标签页 9. 按一下 确定 结束对话框,接着按一下 下一步 进入 储存、排程和复制封装 画面(如图 24-10 所示),这个画面可以决定是否现在就执行汇入,还是要安排汇入的排程。在这里也可选择 储存 DTS 封装 以便日后再次执行此汇入程序。要选择这个项目,请按一下 储存 DTS 封装 复选框(显示在下方的 储存 区域中),选取后就可储存之前选取过的所有转换服务设定。在这里我们选择 立即执行 。 10. 按一下 下一步 进入 正在完成 DTS 汇入/汇出精灵 (如图 24-11 所示),按一下 完成 执行汇入。 图24-10 「储存、排程和复制封装」画面 图24-11 「正在完成 DTS 汇入/汇出精灵」画面 11. 按一下 完成 后,会看到 正在执行封装 画面的执行(如图24-12 上一页 [1] [2] [3] [4] 下一页 |