源数据的结构不需要与目标表本身的结构相匹配。例如,列数据类型可以不同或者采用不同的顺序,或者导入数据中可能有与目标表中的列值不匹配的其它值。
如果知道要导入数据的结构与目标表的结构不匹配,则可以:
在 LOAD TABLE 语句中提供一个要装载的列名称的列表
使用 INSERT 语句的变形形式和一个全局临时表重新排列导入数据以适合目标表的结构。
使用 INPUT 语句指定列的特定集合或顺序。
如果正在导入的文件包含表中列的子集的数据,或者如果列的顺序不同,则您还可以使用 LOAD TABLE 语句 DEFAULTS 选项填充空白并合并非匹配表结构。
如果 DEFAULTS 为 OFF,则将任何未显示在列列表中且可为空的列置为空值。如果 DEFAULTS 为 OFF 并且列列表中省略了不可为空的列,则数据库服务器会试图将空字符串转换为该列的类型。
如果 DEFAULTS 为 ON 并且列具有缺省值,则使用该值。
例如,可以为 Customers 表中的 City 列定义一个缺省值,然后使用 LOAD TABLE 语句从名为 new_customers.txt 的虚构文件中将新行装载到 Customers 表中,如下所示:
ALTER TABLE Customers ALTER City DEFAULT 'Waterloo'; LOAD TABLE Customers ( Surname, GivenName, Street, State, Phone ) FROM 'new_customers.txt' DEFAULTS ON; |
由于没有为 City 列提供值,因此提供缺省值。如果早已指定 DEFAULTS OFF
,则应已为 City 列指派空字符串。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |