Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (E-O)

 

LOAD TABLE 语句

此语句用于将批量数据从外部文件导入到数据库表中。

语法
LOAD [ INTO ] TABLE [ owner.]table-name 
[ ( column-name, ... ) ]
load-source
[ load-option ... ] 
[ statistics-limitation-option ]
load-source : 
{ FROM filename-expression 
   | USING FILE filename-expression 
   | USING CLIENT FILE client-filename-expression
   | USING VALUE value-expression
   | USING COLUMN column-expression  }
filename-expression : string | variable 
client-filename-expression : string | variable 
value-expression : expression
column-expression : 
column-name 
   FROM table-name 
   ORDER BY column-list
load-option :
BYTE ORDER MARK { ON | OFF }
| CHECK CONSTRAINTS { ON | OFF }
| { COMPRESSED | AUTO COMPRESSED | NOT COMPRESSED }
| { ENCRYPTED KEY 'key' | NOT ENCRYPTED }
| COMMENTS INTRODUCED BY comment-prefix
| COMPUTES { ON | OFF }
| DEFAULTS { ON | OFF }
| DELIMITED BY string
| ENCODING encoding
| ESCAPE CHARACTER character
| ESCAPES { ON | OFF }
| FORMAT { TEXT | BCP }
| HEXADECIMAL { ON | OFF }
| ORDER { ON | OFF }
| PCTFREE percent-free-space
| QUOTE string
| QUOTES { ON | OFF }
| ROW DELIMITED BY string
| SKIP integer
| STRIP { ON | OFF | LTRIM | RTRIM | BOTH }
| WITH CHECKPOINT { ON | OFF }
| WITH { FILE NAME | ROW | CONTENT } LOGGING
statistics-limitation-option :
STATISTICS { 
   ON [ ALL COLUMNS ] 
   | ON KEY COLUMNS 
   | ON ( column-list )
   | OFF 
   }
comment-prefix : string
encoding : string
参数
  • column-name   此子句用于指定要装载数据的一个或多个列。如果 DEFAULTS 选项为 OFF,则将列的列表中不存在的任何列都变为 NULL。如果 DEFAULTS 为 ON 并且列具有缺省值,则使用该值。如果 DEFAULTS 为 OFF 并且列列表中省略了不可为空的列,则数据库服务器会试图将空字符串转换为该列的类型。

    如果指定了列列表,它会列出文件中应存在的列以及列的显示顺序。列名不能重复。列表中未出现的列名将设置为 NULL/零/空或 DEFAULT(取决于列的为空性、数据类型和 DEFAULTS 设置)。使用列名 filler() 可指定存在于输入文件中但是要被 LOAD TABLE 语句忽略的列。

  • load-source   此子句用于指定要从中装载数据的数据源。可以从多个数据源中装载数据。以下列表列出了支持的装载源:

  • FROM 子句   此子句用于指定文件。将 filename-expression 以字符串的形式传递到数据库服务器。因此,该字符串遵循的数据库格式要求与其它 SQL 字符串一样。尤其是:

    • 要指示目录路径,反斜线字符 (\) 必须用两个反斜线来表示。将数据从文件 c:\temp\input.dat 装载到 Employees 表的语句为:

      LOAD TABLE Employees
      FROM 'c:\\temp\\input.dat' ...
    • 路径名相对于数据库服务器,而不是客户端应用程序。

    • 可以使用 UNC 路径名从数据库服务器以外的计算机上的文件装载数据。

  • USING FILE 子句   此子句用于从文件装载数据。其作用等同于指定 FROM filename 子句。

  • USING CLIENT FILE 子句   此子句用于从客户端计算机上的文件装载数据。当数据库服务器从 client-filename-expression 检索数据时,数据在服务器的内存中没有实例化,所以数据库服务器对 BLOB 表达式大小的限制并不适用于文件。因此,客户端文件可以具有任意大小。

  • USING VALUE 子句   此子句用于从任何类型为 CHAR、NCHAR、BINARY 或 LONG BINARY 的表达式中或 BLOB 字符串中装载数据。以下是此子句的用法示例:

    • 以下语法使用 xp_read_file 系统过程从目标文件获取要装载的值:

      ... USING VALUE xp_read_file( 'filename' )...
    • 以下语法直接指定值,并插入其值分别为 4 和 5 的两行:

      ... USING VALUE '4\n5'...
    • 以下语法将 READ_CLIENT_FILE 函数的结果作为值使用:

      ... USING VALUE READ_CLIENT_FILE( client-filename-expression )

      在本例中,也可以指定 USING CLIENT FILE client-filename-expression,因为它们在语义上是等效的。

    如果在 LOAD TABLE 语句中没有指定 ENCODING 子句,则如果值为 CHAR 或 BINARY 类型则假定用数据库字符集 (db_charset) 对值进行编码,而在值为 NCHAR 类型的情况下则假定使用 NCHAR 数据库字符集 (nchar_charset) 对值进行编码。

  • USING COLUMN 子句   此子句用于从另一个表的单个列装载数据。数据库服务器在通过重新使用 LOAD TABLE ...WITH CONTENT LOGGING 语句进行恢复期间重新使用事务日志时会用到此子句。LOAD TABLE ...WITH CONTENT LOGGING 语句的事务日志记录由连接在一起的行组成的块构成。恢复期间当数据库服务器在事务日志中遇到这些块时,会将这些块装入临时表中,然后再从原始装载操作中装载所有的数据。

    可以在 USING COLUMN 子句中使用以下子句:

    • table-name   包含要从中装载数据的列的基表或临时表的名称。当从事务日志进行恢复期间被数据库服务器使用时,该表即为保存待分析和装载的行块的表。

    • column-name   table-name 中列的名称,该列用于保存要装载的行块。

    • column-list   目标表中的一个或多个列,用于在装载数据前对行进行排序。

    • load-option 子句   可以通过指定若干装载选项来控制数据的装载方式。下面的列表给出了所支持的装载选项:

      • BYTE ORDER MARK 子句   此子句用于指定字节顺序标记 (BOM) 是否出现在编码中。缺省情况下,此选项为 ON,即允许服务器在数据的开始位置搜索并解释字节顺序标记 (BOM)。如果 BYTE ORDER MARK 为 OFF,则服务器不搜索 BOM。

        如果指定了 ENCODING 子句:

        • 如果 BYTE ORDER MARK 选项为 ON,并且指定了具有某一种字节序(如 UTF-16BE 或 UTF-16LE)的 UTF-16 编码,则数据库服务器会在数据的开始位置搜索 BOM。如果 BOM 存在,会将它用于验证数据的字节排序方式。如果指定了错误的字节序,则返回错误。
        • 如果 BYTE ORDER MARK 选项为 ON,但指定的是没有显式字节序的 UTF-16 编码,则数据库服务器将在数据的开始位置搜索 BOM。如果 BOM 存在,会将它用于确定数据的字节排序方式。否则,会将其假定为操作系统的字节排序方式。
        • 如果 BYTE ORDER MARK 选项为 ON,并指定了 UTF-8 编码,则数据库服务器会在数据的开始位置搜索 BOM。如果 BOM 存在,则会被忽略。

        如果未指定 ENCODING 子句:

        • 如果未指定 ENCODING 子句而 BYTE ORDER MARK 选项为 ON,则数据库服务器会在输入数据的开始位置搜索 BOM。如果找到 BOM,则会根据 BOM 的编码(UTF-16BE、UTF-16LE 或 UTF-8)自动选择源编码,同时不将 BOM 视作要装载的数据的一部分。
        • 如果未指定 ENCODING 子句且 BYTE ORDER MARK 选项为 OFF,或在输入数据的开始位置未找到 BOM,则使用数据库 CHAR 编码。

      • CHECK CONSTRAINTS 子句   此子句用于控制装载期间是否检查约束。缺省情况下,CHECK CONSTRAINTS 为 ON,但是在 CHECK CONSTRAINTS 为 OFF 时,卸载实用程序 (dbunload) 可写出 LOAD TABLE 语句。将 CHECK CONSTRAINTS 设置为 OFF 禁用检查约束,这很有用,例如,在数据库重建过程。如果表的检查约束调用尚未创建的用户定义函数,则重建将失败,除非将 CHECK CONSTRAINTS 设置为 OFF。

      • COMMENTS INTRODUCED BY 子句   使用此子句可指定用于在数据文件中引入注释的字符串。使用此选项之后,LOAD TABLE 将忽略任何以字符串 comment-prefix 开头的行。例如,在以下示例中,input.dat 中以 // 开头的行将被忽略。
        LOAD TABLE Employees FROM 'c:\\temp\\input.dat' COMMENTS INTRODUCED BY '//' ...

        仅允许在一个新行的开始处使用注释。

        如果省略 COMMENTS INTRODUCED BY,则数据文件不得包含注释,因为此时会将这些注释解释为数据。

      • COMPRESSED 子句   如果要装载的数据在输入文件中以压缩形式存在,请指定 COMPRESSED。数据库服务器会在装载数据前对其进行解压缩。如果指定了 COMPRESSED 但数据并未压缩,则 LOAD 失败并返回错误。

        指定 AUTO COMPRESSED 可允许数据库服务器确定输入文件中的数据是否经过压缩。如果经过压缩,则数据库服务器会在装载数据前对其进行解压缩。

        如果指定 NOT COMPRESSED,则表示输入文件中的数据未经压缩。如果数据经过压缩,但不希望数据库服务器将其解压缩,这时也可以指定 NOT COMPRESSED。这种情况下,数据在数据库中仍保持加密状态。但是,如果同时对文件进行了加密和压缩,则 NOT ENCRYPTED 只有在同时使用了 NOT COMPRESSED 的情况下才可以使用。

      • COMPUTES 子句   缺省情况下,此选项为 ON,即允许对已计算的列进行重新计算。将 COMPUTES 设置为 OFF 会禁用计算列的重新计算。COMPUTES 设置为 OFF 很有用,例如,在您重建数据库但表的某个计算列调用尚未创建的用户定义函数时。如果此选项不设置为 OFF,则重建将失败。

        COMPUTES 设置为 OFF 时卸载实用程序 (dbunload) 会写出 LOAD TABLE 语句。

      • DEFAULTS 子句   缺省情况下,DEFAULTS 被设置为 OFF。如果 DEFAULTS 为 OFF,则将任何未显示在列的列表中且可为空的列置为 NULL。如果将 DEFAULTS 设置为 OFF 并且列的列表中省略了不可为空的列,则数据库服务器会试图将空字符串转换为该列的类型。如果将 DEFAULTS 设置为 ON 并且列具有缺省值,则使用该值。

      • DELIMITED BY 子句   此子句用于指定列分隔符字符串。缺省的列分隔符字符串是逗号;但是它可以是任何长度在 255 字节之内的字符串(如 ... DELIMITED BY '###' ...)。指定字符串作为分隔符时应加上引号。如果您要指定以制表符分隔的值,可使用制表符 (9) 的十六进制转义序列,... DELIMITED BY '\x09' ...

      • ENCODING 子句   此子句用于指定要装载到数据库中的数据所使用的字符编码。ENCODING 子句只能与 TEXT 格式配合使用。

        如果在装载操作期间发生转换错误,将根据 on_charset_conversion_failure 选项的设置进行报告。请参见on_charset_conversion_failure 选项 [数据库]

        有关如何获得 SQL Anywhere 支持的编码列表的详细信息,请参见支持的字符集

        指定 BYTE ORDER 子句,使数据中包含字节顺序标记。

      • ENCRYPTED 子句   此子句用于指定加密设置。装载加密数据时,应指定 ENCRYPTED KEY,并在其后附加用于加密输入文件中数据的密钥。

        如果指定 NOT ENCRYPTED,则表示输入文件中的数据是未加密的。如果数据是加密的,但不希望数据库服务器将其解密,这时也可以指定 NOT ENCRYPTED。这种情况下,数据在数据库中仍保持加密状态。但是,如果同时对文件进行了加密和压缩,则 NOT ENCRYPTED 只有在同时使用了 NOT COMPRESSED 的情况下才可以使用。

      • ESCAPE CHARACTER 子句   此子句用于指定数据中使用的转义字符。以十六进制代码和符号存储的字符的缺省转义字符是反斜线 (\),例如 \x0A 是换行符。使用 ESCAPE CHARACTER 子句可以对此进行更改。例如,要将感叹号用作转义字符,应输入:
        ESCAPE CHARACTER '!'

        只有单个的单字节字符才可用作转义字符。

      • ESCAPES 子句   此子句用于控制是否识别转义字符。在 ESCAPES 设置为 ON(缺省值)的情况下,数据库服务器会识别反斜线字符后面的字符并将其解释为特殊字符。换行符可以作为组合 \n 包含在数据中,其它字符可以作为十六进制 ASCII 代码(如使用 \x09 代替制表符)包含在数据中。两个连续的反斜线字符 ( \\ ) 被解释为单个反斜线。任何除 n、x、X 或 \ 以外的字符及前面的反斜线都被解释为两个单独的字符。例如,\q 插入反斜线和字母 q。

      • FORMAT 子句   此子句用于指定要从中装载数据的数据源的格式。如果选择 TEXT,则假定输入行为字符(由 ENCODING 选项所定义),每个输入行占一行,值由列分隔符字符串分隔。选择 BCP 会允许导入 Adaptive Server Enterprise 生成的包含 BLOB 的 BCP 输出文件。

      • HEXADECIMAL 子句   此子句用于指定是否将二进制值读取为十六进制值。缺省情况下,HEXADECIMAL 为 ON。当 HEXADECIMAL 为 ON 时,二进制列值显示为 0xnnnnnn...,其中 0x 是零后面跟一个 x,每个 n 都是一个十六进制数字。处理多字节字符集时,使用 HEXADECIMAL ON 很重要。

        HEXADECIMAL 子句只能与 FORMAT TEXT 子句配合使用。

      • ORDER 子句   此子句用于指定装载时数据的排序顺序。ORDER 的缺省值为 ON。如果 ORDER 为 ON,并且声明了一个聚簇索引,则 LOAD TABLE 根据聚簇索引排序输入数据,并以相同的顺序插入行。如果要装载的数据已经排序,则应将 ORDER 设置为 OFF。请参见使用聚簇索引

      • PCTFREE 子句   此子句用于指定要为每个表页保留的可用空间百分比。此设置将替换表的任何永久设置,但只限于装载过程中以及装载的数据。值 percent-free-space 是一个介于 0 至 100 之间的整数。值 0 指定每页上不留任何可用空间—每页均会填满。如果值很高,会使每行单独插入到页中。有关 PCTFREE 的详细信息,请参见CREATE TABLE 语句

      • QUOTE 子句   QUOTE 子句仅适用于 TEXT 数据;string 放置于字符串值的两边。缺省值为单引号(撇号)。

      • QUOTES 子句   此子句用于指定字符串是否用引号括起来。当 QUOTES 设置为 ON(缺省值)时,LOAD TABLE 语句要求将字符串用引号字符括起来。引号字符是撇号(单引号)或引号(双引号)。字符串中出现的第一个这样的字符将被视为该字符串的引号字符。字符串必须以匹配的引号结束。

        当 QUOTES 设置为 ON 时,列分隔符字符串可以包含在列值中。另外,假定引号字符不属于该值的一部分。因此,尽管地址中出现了逗号,以下行也会被视为两个值(而不是三个值)。此外,将地址引起来的引号不会插入到数据库中。

        '123 High Street, Anytown',(715)398-2354

        当 QUOTES 设置为 ON 时,要在值中包括引号字符,必须使用两个引号。以下这个行在第三列中包括一个单引号字符值:

        '123 High Street, Anytown','(715)398-2354',''''

      • ROW DELIMITED BY 子句   此子句用于指定表示输入记录结束的字符串。缺省分隔符字符串是换行符 (\n);但是它可以是任何长度在 255 字节之内的字符串(如 ROW DELIMITED BY '###')。相同的格式要求同样适用于其它 SQL 字符串。如果您要指定以制表符分隔的值,可使用制表符 (9) 的十六进制转义序列,ROW DELIMITED BY '\x09'。如果分隔符字符串包含 \n,则它与 \r\n 或 \n 匹配。

      • SKIP 子句   此子句用于指定是否忽略文件开始位置的行。integer 参数指定要跳过的行数。例如,可以用此子句跳过包含列标题的行。如果行分隔符不是缺省值(换行符),则当数据包含嵌入在带引号的字符串中的行分隔符时,此跳过功能可能无法正常工作。

      • STRIP 子句   此子句用于指定在插入无引号值之前,是否应去除这些值的前导或尾随空白。STRIP 选项接受以下选项:

        • STRIP OFF   不去除前导空白或尾随空白。

        • STRIP LTRIM   去除前导空白。

        • STRIP RTRIM   去除尾随空白。

        • STRIP BOTH   去除前导空白和尾随空白。

        • STRIP ON   不建议使用。等效于 STRIP RTRIM。

      • WITH CHECKPOINT 子句   此子句用于指定是否执行检查点。缺省设置为 OFF。如果将此子句设置为 ON,则会在成功完成并记录语句之后执行检查点操作。如果将此子句设置为 ON,而且在发出 CHECKPOINT 前数据库需要自动恢复,则必须具有用来装载表的数据文件才能成功完成恢复。如果指定了 WITH CHECKPOINT ON,并且此后需要恢复,则恢复在检查点之后开始,并且不必存在数据文件。

        如果数据库损坏,需要使用备份并应用当前的日志文件,则无论此子句的设置情况如何,都需要数据文件。

        小心

        如果将数据库选项 conversion_error 设置为 Off,则可能会将错误的数据装载到表中而得不到任何错误报告。如果未指定 WITH CHECKPOINT ON,并且数据库需要恢复,则当恢复过程中 conversion_error 为 On(缺省值)时,恢复可能失败。建议不要在 conversion_error 设置为 Off 且未指定 WITH CHECKPOINT ON 时装载表。

        有关 conversion_error 选项的详细信息,请参见conversion_error 选项 [兼容性]

      • WITH { FILE NAME | ROW | CONTENT } LOGGING   此子句用于控制装载操作期间记录到事务日志的信息的详细程度。记录级别如下:

        • WITH FILE NAME LOGGING 子句   WITH FILE NAME LOGGING 子句使在事务日志中只记录 LOAD TABLE 语句。为保证恢复期间使用事务日志时的结果一致,原始装载操作时所使用的文件必须位于其原始位置,并且必须包含原始数据。此记录级别不影响性能,然而如果数据库参与镜像或同步,则不应使用此级别。此外,从表达式或客户端文件装载数据时也不能使用此级别。

          如果没有在 LOAD TABLE 语句中指定记录级别,则指定以下内容时 WITH FILE NAME LOGGING 将为缺省级别:

          • FROM filename-expression
          • USING FILE filename-expression

        • WITH ROW LOGGING 子句   WITH ROW LOGGING 子句使每个装载的行在事务日志中都作为 INSERT 语句来记录。建议对参与同步的数据库使用此记录级别,另外在数据库镜像时也可以使用此级别。然而,当装载大量数据时,此记录类型可能会影响性能,并导致事务日志过长。

          对于要装入的表中包含非确定性值(例如计算列)或 CURRENT TIMESTAMP 缺省值的数据库,这种级别最为理想。

        • WITH CONTENT LOGGING 子句   WITH CONTENT LOGGING 子句使数据库服务器将要装载的行中的内容合并为块。随后(例如从事务日志恢复数据时)可将这些数据块重组到行中。装载大量数据时,此记录类型对性能影响非常小,并且能提供更完善的数据保护,只是会导致事务日志较长。建议对参与镜像的数据库使用此记录级别,或在不需要维护原始数据文件用于以后恢复的情况下使用。

          如果数据库参与同步,则不能使用 WITH CONTENT LOGGING 子句。

          如果没有在 LOAD TABLE 语句中指定记录级别,则指定以下内容时 WITH CONTENT LOGGING 将为缺省级别:

          • USING CLIENT FILE client-filename-expression

          • USING VALUE value-expression

          • USING COLUMN column-expression

  • statistics-limitation-option   用于限制在 LOAD TABLE 执行期间生成统计信息的列。否则,将生成所有列的统计信息。只应在确认在某些列上不使用统计信息后才使用此子句。可以指定 ON ALL COLUMNS(缺省值)、OFF、ON KEY COLUMNS 或为其生成统计信息的列列表。

注释

LOAD TABLE 允许执行从文件到数据库表的高效的大量插入。LOAD TABLE 比 Interactive SQL 语句 INPUT 更有效率。

LOAD TABLE 对整个表进行写锁定。对于基表和全局临时表,执行提交。对于局部临时表,不执行提交。

如果试图对构建了快速文本索引的表或快速视图所引用的表使用 LOAD TABLE,则装载会失败。对于非快速文本索引或实例化视图则不会出现这种情况;但强烈建议您先截断相关索引和实例化视图中的数据,再执行 LOAD TABLE 语句,然后刷新索引和视图。请参见TRUNCATE 语句TRUNCATE TEXT INDEX 语句

不要在创建时已指定 ON COMMIT DELETE ROWS 的临时表上使用 LOAD TABLE 语句(无论 ON COMMIT DELETE ROWS 是显式指定的,还是在缺省情况下指定的)。不过,如果已指定 ON COMMIT PRESERVE ROWS 或 NOT TRANSACTIONAL,则可以 使用 LOAD TABLE。

使用 FORMAT TEXT 时,不指定任何值就表示 NULL。例如,如果需要三个值且文件包含 1,,'Fred',,则所插入的值为 1、NULL 和 Fred。如果文件包含 1,2,,则会插入值 1、2 和 NULL。仅由空格组成的值也被视为 NULL 值。例如,如果文件包含 1, ,'Fred',,则会插入值 1、NULL 和 Fred。所有其它值均被视为非 NULL。例如 ''(单引号 单引号)是一个空字符串。'NULL' 是一个包含四个字母的字符串。

如果由 LOAD TABLE 装载的列不允许使用 NULL 值,且文件值为 NULL,则会为数字列赋予值 0(零),为字符列赋予空字符串 ('')。如果由 LOAD TABLE 装载的列允许使用 NULL 值,且文件值为 NULL,则列值将为 NULL(对于所有类型)。

如果表包含 a、b 和 c 三列,输入数据包含 a、b 和 c,而 LOAD 语句仅指定 a 和 b 列作为要将数据装入的列,则会向 c 列插入以下值:

  • 如果将 DEFAULTS 指定为 ON 并且 c 列具有缺省值,则使用该缺省值。

  • 如果没有为 c 列定义缺省值,但该列允许 NULL,则使用 NULL。

  • 如果没有为 c 列定义缺省值,且该列不允许 NULL,则使用零 (0) 或空字符串 (''),或者返回错误,这要根据列的数据类型而定。

LOAD TABLE 和列统计信息   为了创建表列的直方图,LOAD TABLE 在装载数据时捕获列统计信息。优化程序会使用此直方图。有关优化程序如何使用列统计信息的详细信息,请参见优化程序估计值和列统计信息

以下是有关装载和列统计信息的其它提示:

  • LOAD TABLE 保存基表的统计信息以备将来使用。它不保存全局临时表的统计信息。

  • 如果要向以前可能包含数据的空表中装载,在执行 LOAD TABLE 语句前删除列的统计信息可能会有益处。请参见DROP STATISTICS 语句

  • 如果对列执行 LOAD TABLE 时存在列统计信息,将 会重新计算该列的统计信息。相反,会将新数据的统计信息插入到现有统计信息中。这意味着如果现有列的统计信息已过期,它们在新数据装载到该列后将仍处于过期状态。如果怀疑列统计信息已过期,应该考虑在执行 LOAD TABLE 语句之前或之后更新它们。请参见更新列统计信息以提高优化程序性能

  • 只有在表具有五个或更多的行时,LOAD TABLE 才会添加统计信息。如果表至少具有五个行,则按如下方式修改直方图:

    数据是否已在表中? 是否存在直方图? 采取的操作
    将更改集成到现有直方图
    不生成直方图
    将更改集成到现有直方图
    建立新的直方图
  • 对于超过 90% 的上载行,LOAD TABLE 不为包含 NULL 值的列生成统计信息。

使用动态构造的文件名   通过向变量指派文件名,然后在 LOAD TABLE 语句中使用该变量名,可以使用该动态构造的文件名执行 LOAD TABLE 语句。

权限

执行 LOAD TABLE 语句所需的权限取决于数据库服务器的 -gl 选项,如下所示:

  • 如果 -gl 选项设置为 ALL,则您必须是表的所有者,或者具有 DBA 权限或 ALTER 特权。

  • 如果 -gl 选项设置为 DBA,则您必须具有 DBA 权限。

  • 如果 -gl 选项设置为 NONE,则不允许执行 LOAD TABLE。

请参见-gl 服务器选项

表需要有独占锁。

从客户端计算机上的文件读取时:

副作用

自动提交。

如果没有指定 WITH ROW LOGGING 子句,日志文件中不会记录插入。因此,系统失败时可能无法恢复已插入的行,这取决于记录的类型。此外,决不能在用作 MobiLink 客户端的数据库中或 SQL Remote 复制所涉及的数据库中使用不带 WITH ROW LOGGING 子句的 LOAD TABLE 语句,因为这些技术会通过分析日志文件复制更改。

LOAD TABLE 语句不触发与表关联的任何触发器。

操作开始时会执行检查点操作。如果指定了 WITH CHECKPOINT ON,在结束时会执行第二个检查点。

如果装载了大量数据,则更新列统计信息。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下是 LOAD TABLE 的示例。首先,创建一个表,然后使用名为 input.txt 的文件将数据装载到表中。

CREATE TABLE t( a CHAR(100), let_me_default INT DEFAULT 1, c CHAR(100) );

以下是名为 input.txt 的文件的内容:

ignore_me, this_is_for_column_c, this_is_for_column_a

以下 LOAD 语句装载名为 input.txt 的文件:

LOAD TABLE T ( filler(), c, a ) FROM 'input.txt' FORMAT TEXT DEFAULTS ON;

命令 SELECT * FROM t 生成结果集:

a let_me_default c
this_is_for_column_a 1 this_is_for_column_c

以下语句使用动态构造的文件名通过 EXECUTE IMMEDIATE 语句执行 LOAD TABLE 语句:

CREATE PROCEDURE LoadData( IN from_file LONG VARCHAR )
BEGIN
    DECLARE path LONG VARCHAR;
    SET path = 'd:\\data\\' || from_file;
    LOAD TABLE MyTable FROM path;
END;

以下示例将 UTF-8 编码的表数据装载到 mytable 中:

LOAD TABLE mytable FROM 'mytable_data_in_utf8.dat' ENCODING 'UTF-8';