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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 数据导入和导出 » 数据导入

 

合并不同的表结构

使用 INSERT 语句的变形形式和一个全局临时表重新排列导入数据以适合目标表的结构。

前提条件

要创建全局临时表,您必须具有以下一种系统特权:

  • CREATE TABLE
  • CREATE ANY TABLE
  • CREATE ANY OBJECT

导入(装载)数据所需的特权取决于 -gl 数据库选项的设置,以及要导入的数据的数据源。有关装载数据所需特权的详细信息,请参见 LOAD TABLE 语句。

要使用 INSERT 语句,您必须是该表的所有者,或者具有以下一种特权:

  • INSERT ANY TABLE 系统特权
  • 对该表的 INSERT 特权

此外,如果指定 ON EXISTING UPDATE 子句,则您还必须具有 UPDATE ANY TABLE 系统特权,或对该表具有 UPDATE 特权。

 任务
  1. 在 [SQL 语句] 窗格中,创建结构与输入文件相匹配的全局临时表。

    您可以使用 CREATE TABLE 语句创建该全局临时表。

  2. 使用 LOAD TABLE 语句将数据装载到全局临时表中。

    关闭数据库连接时,全局临时表中的数据就会消失。但是,表定义仍然存在。可以在下次连接数据库时使用它。

  3. 使用带有 SELECT 子句的 INSERT 语句从临时表中抽取数据并对其进行汇总,然后将这些数据复制到一个或多个永久数据库表中。

结果

这些数据即被装载到永久数据库表中。

以下是上述概括介绍的各个步骤的示例。



CREATE GLOBAL TEMPORARY TABLE TempProducts
(
    ID                    integer NOT NULL,
    Name                  char(15) NOT NULL,
    Description           char(30) NOT NULL,
    Size                  char(18) NOT NULL,
    Color                 char(18) NOT NULL,
    Quantity              integer NOT NULL,
    UnitPrice             numeric(15,2) NOT NULL,
    CONSTRAINT ProductsKey PRIMARY KEY (ID)
)
ON COMMIT PRESERVE ROWS;

LOAD TABLE TempProducts
FROM 'C:\\ServerTemp\\newProducts.csv'
SKIP 1;

INSERT INTO Products WITH AUTO NAME 
    (SELECT Name, Description, ID, Size, Color, Quantity, 
            UnitPrice * 1.25 AS UnitPrice 
    FROM TempProducts);

在向 Products 表插入行之前,全局临时表中的各项价格会上调 25%。

 另请参见