ACCESSDATA 命令

从各种 ODBC 兼容数据源中导入数据。

该命令采取 ACCESSDATA64 或 ACCESSDATA32 形式,具体取决于您使用的是 64 位还是 32 位 ODBC 驱动程序。

语法

{ACCESSDATA64 | ACCESSDATA32} {CONNECTOR | ODBC {"Driver"|"Dsn"|"File"}} NAME  <USER 用户 ID> <PASSWORD 数字 | PROMPT_PASSWORD> <PASSWORD 数字 AS 密码键名称 <...n>> TO 表名称 CHARMAX 最大域长度 MEMOMAX 最大域长度 <ALLCHARACTER> <ASYNC> SOURCE (连接设置) <HASH(盐值, )>
SQL_QUERY
(SQL 语法)
END_QUERY

参数

名称 描述
CONNECTOR | ODBC {"Driver"|"Dsn"|"File"}

您想要建立的 ODBC 连接的类型:

  • CONNECTOR使用本机 Analytics 数据连接器进行连接
  • ODBC "Driver"使用您的计算机上安装的 Windows ODBC 驱动程序进行连接
  • ODBC "Dsn"使用您的计算机上保存的 DSN(数据源名称)进行连接
  • ODBC "File"使用文件 DSN(一个已保存的 .dsn 文件)进行连接
NAME

Analytics 数据连接器、ODBC 驱动程序或 DSN 的名称。

例如:

  • NAME "SAP"
  • NAME "Amazon Redshift"
  • NAME "Microsoft Access Driver (*.mdb, *.accdb)"
  • NAME "My Excel DSN"
  • NAME "excel.dsn"

USER 用户 ID

可选

需要用户 ID 的数据源的用户 ID。

PASSWORD 数字 | PROMPT_PASSWORD

可选

对于需要单个密码的数据源:

  • PASSWORD num要使用的密码定义
  • PROMPT_PASSWORD显示密码提示

有关更多信息,请参阅将密码定义与 ACCESSDATA 结合使用

隐藏密码值

当您使用 Analytics 中的数据访问窗口运行 ACCESSDATA 命令并提供密码时,密码值不会被写入日志。相反,PROMPT_PASSWORD 参数被替代。

将 PASSWORD 命令与 PASSWORD 数字结合使用类似于使用 PROMPT_PASSWORD。这两个方法都提示用户输入密码。PROMPT_PASSWORD 具有允许更新用户 ID 的优点。

PASSWORD num AS password_keyname <...n>

可选

对于需要多个密码的数据源而言,为要使用的密码定义。

密码键名称必须精确复制 SOURCE 所指定的连接设置中出现的密码键名称。

有关更多信息,请参阅将密码定义与 ACCESSDATA 结合使用

TO 表名

要将命令结果发送到的位置:

  • table_name将结果保存到 Analytics

    请将表名称指定为具有 .FIL 文件扩展名的带引号的字符串。例如:TO "Output.FIL"

    默认情况下,表数据文件 (.FIL) 被保存到包含 Analytics 项目的文件夹。

    请使用绝对或相对文件路径将该数据文件保存到另外的现有文件夹:

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    说明

    表名称限制为不超过 64 个字母数字字符,且不包括 .FIL 扩展名。该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。该名称不能以数字开头。

CHARMAX 最大域长度

Analytics 表中任何初始时作为您要从中导入的源中的字符数据的域的最大长度(单位为字符)。

默认值为 50。超过最大字段长度的数据在被导入 Analytics 是会被截断。

截断字段这项功能,可防止偶尔出现的长值将整体记录长度扩展到超过导入流程支持的长度范围:

  • 32,767 个字符(非 Unicode 版 Analytics

  • 16,383 个字符(Unicode 版 Analytics

MEMOMAX 最大域长度

您要导入的文本域、说明域或备注域的最大长度(单位为字符)。

默认值为 100。超过最大字段长度的数据在被导入 Analytics 是会被截断。

ALLCHARACTER

可选

将字符数据类型自动分配给所有被导入的域。

一旦将数据导入 Analytics,您就可以向域分配不同的数据类型(如数值或日期时间),并且指定格式详细信息。

提示

如果您要导入包含数值 ID 值的表,则 ALLCHARACTER 很有用。您可以使用 ALLCHARACTER 防止 Analytics 自动将数值数据类型分配给应该使用字符数据类型的值。

ASYNC

可选

说明

ASYNC 参数只能在通过 SAP 连接器(适用于 SAP 的 ACL 连接器)导入数据时使用。

指定从 SAP 系统异步下载的 SAP 表。

您可以构建多个 ACCESSDATA 命令块,其中包含指定的 ASYNC 参数,来并行下载多个 SAP 表(即,同时或异步)。您还必须在命令块中的最后一个 ACCESSDATA 命令之后立即使用 GETSAPDATA 命令。有关更多信息,包括需要遵循的准则,请参阅并行导入多个 SAP 表

如果省略 ASYNC 参数,则会依次执行源自 SAP 的多个导入(即,同步)。如果省略 ASYNC 参数,则请勿使用 GETSAPDATA 命令。

SOURCE 连接设置

要连接到数据源所需的连接设置(连接字符串)。

HASH(加盐值, )

可选

导入指定域作为加密哈希值。哈希值是单向转换,并且在您导入域之后无法解码:

  • salt_value一个与源数据值相连接字母数字字符串,用于增强域中的值的哈希强度。请以带引号的字符串的形式输入哈希值。

    盐值被限制为不超过 128 个字符。请勿使用下列任一字符:(  )  "

  • 要进行哈希处理的一个或多个域的列表。请以带引号的字符串形式输入域,并且用一个逗号分隔每个域。

    您必须指定您在数据访问窗口预览和暂存区域中看到的域名称,而非数据源中的物理域名称。

    说明

    数据访问窗口 预览中显示的域名称,就是 SQL 查询("field_name" AS "alias")中的域别名值。您必须使用别名值来引用域。

HASH("QZ3x7", "SSN_NO, CC_NO, Last_Name")

有关比较导入过程中哈希值和 ACL脚本 中哈希值的信息,请参阅将用 ACCESSDATA 哈希的数据与用 ACL脚本 HASH( ) 函数哈希的数据进行比较

SQL_QUERY (SQL 语法) END_QUERY

SQL 导入语句。

括号内的所有内容都是 SQL 查询的一部分且必须是有效的 SQL。

说明

您不能在 SQL 导入语句的主体中使用 ACL脚本 语法(命令或者函数)。您必须仅使用有效的 SQL 语法。

示例

使用本机 Analytics 数据连接器导入数据

您需要从 Amazon Redshift 云数据服务导入数据。为此,您使用 Analytics Amazon Redshift 数据连接器:

ACCESSDATA64 CONNECTOR NAME "Amazon Redshift" USER "ACL_user" PROMPT_PASSWORD TO "Entitlement_History.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( boolsaschar=0;cachesize=100;database=usage;declarefetchmode=0;maxbytea=255;maxlongvarchar=8190;maxvarchar=255;port=5439;servername=acl_test.highbond.com;singlerowmode=1;sslmode=require;textaslongvarchar=0;usemultiplestatments=0;useunicode=1)
  SQL_QUERY(
    SELECT
      "entitlement_history"."organization" AS "organization",
      "entitlement_history"."user_email" AS "user_email",
      "entitlement_history"."plan_id" AS "plan_id",
      "entitlement_history"."date_from" AS "date_from",
      "entitlement_history"."date_to" AS "date_to"
    FROM
      "prm"."entitlement_history" "entitlement_history"
  ) END_QUERY

使用 Windows ODBC 驱动程序导入数据

您需要从 Microsoft Access 数据库导入数据。为此,您使用 Windows ODBC 驱动程序连接到 MS Access 并完成导入:

ACCESSDATA32 ODBC "Driver" NAME "Microsoft Access Driver (*.mdb)" TO "Invoices.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( dbq=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files\Sample.mdb;defaultdir=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files;driverid=281;fil=MS Access;maxbuffersize=2048;maxscanrows=8;pagetimeout=5;safetransactions=0;threads=3;usercommitsync=Yes)
  SQL_QUERY(
    SELECT
      `Customer`.`CustID` AS `CustID`,
      `Customer`.`Company` AS `Company`,
      `Customer`.`Address` AS `Address`,
      `Customer`.`City` AS `City`,
      `Customer`.`Region` AS `Region`,
      `Customer`.`PostalCode` AS `PostalCode`,
      `Customer`.`Country` AS `Country`,
      `Customer`.`Phone` AS `Phone`,
      `Orders`.`OrderID` AS `OrderID`,
      `Orders`.`CustID` AS `Orders_CustID`,
      `Orders`.`ProdID` AS `ProdID`,
      `Orders`.`OrderDate` AS `OrderDate`,
      `Orders`.`Quantity` AS `Quantity`,
      `Product`.`ProdID` AS `Product_ProdID`,
      `Product`.`ProdName` AS `ProdName`,
      `Product`.`UnitPrice` AS `UnitPrice`,
      `Product`.`Descript` AS `Descript`,
      `Product`.`ShipWt` AS `ShipWt`
    FROM
      (`Customer` `Customer`
    INNER JOIN
      `Orders` `Orders`
      ON `Customer`.`CustID` = `Orders`.`CustID`
      )
    INNER JOIN
      `Product` `Product`
      ON `Orders`.`ProdID` = `Product`.`ProdID`
    WHERE
    (
      `Customer`.`Region` = 'BC'
      OR `Customer`.`Region` = 'WA'
    )
  ) END_QUERY

使用 Windows DSN(数据源名称)导入数据

您需要从 Microsoft Excel 文件导入数据。为此,您使用 Windows DSN 连接到 Excel 并完成导入:

ACCESSDATA32 ODBC "Dsn" NAME "Excel Files" TO "Trans_April_15_cutoff.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( dbq=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files\Trans_April.xls;defaultdir=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files;driverid=1046;maxbuffersize=2048;pagetimeout=5)
  SQL_QUERY(
    SELECT
      `Trans_Apr_`.`CARDNUM` AS `CARDNUM`,
      `Trans_Apr_`.`AMOUNT` AS `AMOUNT`,
      `Trans_Apr_`.`TRANS_DATE` AS `TRANS_DATE`,
      `Trans_Apr_`.`CODES` AS `CODES`,
      `Trans_Apr_`.`CUSTNO` AS `CUSTNO`,
      `Trans_Apr_`.`DESCRIPTION` AS `DESCRIPTION`
    FROM
      `Trans_Apr$` `Trans_Apr_`
    WHERE
      (
       `Trans_Apr_`.`TRANS_DATE` <= {ts '2003-04-15 00:00:00'}
      )
  ) END_QUERY

备注

有关此命令工作原理的更多信息,请参阅 使用 数据访问窗口

将密码定义与 ACCESSDATA 结合使用

您使用 ACCESSDATA 命令连接到的数据源通常需要使用密码、令牌或者某个其他私密认证值进行认证。对于某些数据源,需要一个以上的认证值。

作为 ACCESSDATA 命令的一部分,您可以通过指定一个或多个密码定义提供此认证。密码定义不是密码或者认证值本身。它类似于一个安全地存储以前提供的密码或者认证值的密码变量。使用 ACCESSDATA 命令指定密码定义,您可以避免在 SOURCE 所指定的连接设置中以明文形式显示实际密码。

创建密码定义

在导入脚本中,您必须首先创建一个密码定义,然后该定义才能被 ACCESSDATA 命令使用。

有关创建密码定义以便在 Analytics 中使用的信息,请参阅PASSWORD 命令

有关创建密码定义以便在 机器人 中使用的信息,请参阅 PASSWORD 标记

用于指定密码定义的两个选项

使用 ACCESSDATA 指定密码定义时,您具有两个选项:

  • PASSWORD num为需要单个密码的数据源指定单个密码定义
  • PASSWORD num AS password_keyname可以重复使用,以便为需要多个认证值的数据源指定多个密码定义

说明

您既可以单独使用这两个选项,也可以同时使用它们。

PASSWORD 数字工作原理

如果数据源只需要单个密码,请使用 PASSWORD 数字参数。

在下面的例子中:

  1. PASSWORD 1 命令提示用户输入一个密码,并且创建一个安全地存储输入的密码的密码定义。
  2. ACCESSDATA 命令中,PASSWORD 1 参数引用该密码定义,并且将存储的密码值安全地传入 SOURCE 所指定的连接设置 (auth_accesstoken=[$pwd])。
PASSWORD 1
ACCESSDATA64 CONNECTOR NAME "Concur" PASSWORD 1 TO "Concur_data_import.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( auth_accesstoken=[$pwd];auth_type=OAuth 2.0;enabledoublebuffer=1;host=www.concursolutions.com;useencryptedendpoints=1;userparam=all)
  SQL_QUERY(
    SELECT
      "List_Items"."Level_7_Code" AS "Level_7_Code",
      "List_Items"."Name" AS "Name",
      "List_Items"."Level_10_Code" AS "Level_10_Code",
      "List_Items"."Level_8_Code" AS "Level_8_Code",
      "List_Items"."URI" AS "URI",
      "List_Items"."Id" AS "Id",
      "List_Items"."Level_3_Code" AS "Level_3_Code",
      "List_Items"."List_Id" AS "List_Id",
      "List_Items"."Level_4_Code" AS "Level_4_Code",
      "List_Items"."Level_1_Code" AS "Level_1_Code",
      "List_Items"."Parent_Id" AS "Parent_Id",
      "List_Items"."Level_2_Code" AS "Level_2_Code",
      "List_Items"."Level_5_Code" AS "Level_5_Code",
      "List_Items"."Level_6_Code" AS "Level_6_Code",
      "List_Items"."Level_9_Code" AS "Level_9_Code"
    FROM
      "Concur"."List_Items" "List_Items"
  ) END_QUERY

PASSWORD 数字 AS 密码键名称工作原理

如果数据源需要多个密码或者认证值,请使用 PASSWORD 数字 AS 密码键名称参数。

在下面的例子中:

  1. 机器人 中,分析标头中的 //PASSWORD 标记会创建四个密码参数,用户必须为这些参数输入验证值。这四个参数创建四个密码定义,以安全地存储输入的值。
  2. ACCESSDATA 命令中,这四个 PASSWORD 参数引用密码定义,并且将存储的认证值安全地传入 SOURCE 所指定的连接设置:
    • oauthclientid=
    • oauthclientsecret=
    • oauthaccesstoken=
    • oauthaccesstokensecret=

有关更多信息,请参阅配置 ACCESSDATA 以使用多个密码定义

COMMENT
//ANALYTIC TYPE IMPORT 导入 Twitter 数据
//PASSWORD 1 输入 OAuth 客户端 ID:
//PASSWORD 2 输入 OAuth 客户端密钥:
//PASSWORD 3 输入 OAuth 访问令牌:
//PASSWORD 4 输入 OAuth 访问令牌密钥:
//RESULT TABLE Twitter_user_data
END

ACCESSDATA64 CONNECTOR NAME "Twitter" PASSWORD 1 AS oauthclientid PASSWORD 2 AS oauthclientsecret PASSWORD 3 AS oauthaccesstoken PASSWORD 4 AS oauthaccesstokensecret TO "Twitter_user_data.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=;readonly=true;drivertype=ACL Connector for Twitter;connectonopen=true;convertdatetimetogmt=true;limitkeysize=255;maptolongvarchar=-1;maptowvarchar=true;uppercaseidentifiers=false;supportenhancedsql=true;proxyauthscheme=BASIC;proxyautodetect=true;_persist_=encrypted-dp{AQA ... kX3E8yyh05HoG1rH4bm1lhwudUQ==}})
  SQL_QUERY(
    SELECT
      "Users"."ID" AS "ID",
      "Users"."Name" AS "Name",
      "Users"."Screen_Name" AS "Screen_Name",
      "Users"."Location" AS "Location",
      "Users"."Profile_URL" AS "Profile_URL",
      "Users"."Lang" AS "Lang",
      "Users"."Created_At" AS "Created_At",
      "Users"."Friends_Count" AS "Friends_Count",
      "Users"."Followers_Count" AS "Followers_Count",
      "Users"."Favourites_Count" AS "Favourites_Count",
      "Users"."Statuses_Count" AS "Statuses_Count",
      "Users"."Time_Zone" AS "Time_Zone",
      "Users"."Following" AS "Following",
      "Users"."Contributors_Enabled" AS "Contributors_Enabled",
      "Users"."Follow_Request_Sent" AS "Follow_Request_Sent",
      "Users"."Listed_Count" AS "Listed_Count",
      "Users"."Description" AS "Description",
      "Users"."Default_Profile" AS "Default_Profile"
    FROM
      "Twitter"."Users" "Users"
  ) END_QUERY

配置 ACCESSDATA 以使用多个密码定义

要配置 ACCESSDATA 命令以使用多个密码定义,您需要在该命令中插入 PASSWORD 参数,并且从 SOURCE 参数复制密码键名称到 PASSWORD 参数。

  1. Analytics 中,使用数据访问窗口从需要一个以上的认证值的数据源导入数据。
  2. 从日志中复制该 ACCESSDATA 命令到脚本编辑器中打开的脚本。

    通常,只有一个认证值被在 SOURCE 参数中屏蔽 ([$pwd]),其余的值以明文形式出现。例如:

    SOURCE( oauthclientid=cXQ ... dR4;oauthclientsecret=QUt ... beo;oauthaccesstoken=913 ... cPn;oauthaccesstokensecret=[$pwd]; ...)
  3. 请从 SOURCE 参数中删除明文认证值,而只留下密码键名称和等号。

    例如:

    SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=[$pwd]; ...)

    说明

    现在,认证值必须由用户通过用 PASSWORD 命令或者 PASSWORD 分析标签创建的密码定义提供。有关更多信息,请参阅创建密码定义

  4. 可选。从具有屏蔽认证值的密码键名称中删除 [$pwd]

    对于此密码键名称,您可以使用在 ACCESSDATA 命令中指定密码定义的两个方法中的任一种。有关更多信息,请参阅用于指定密码定义的两个选项

  5. ACCESSDATA 命令中删除 PROMPT_PASSWORD 参数。
  6. 在您删除 PROMPT_PASSWORD 的位置插入编号的 PASSWORD 参数,然后从 SOURCE 参数中复制密码键名称并将其粘贴到 PASSWORD 参数。

    例如:

    ACCESSDATA64 CONNECTOR NAME "Twitter" PASSWORD 1 AS oauthclientid PASSWORD 2 AS oauthclientsecret PASSWORD 3 AS oauthaccesstoken PASSWORD 4 AS oauthaccesstokensecret ...SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=; ...)

    重要信息

    SOURCE 参数和 PASSWORD 参数之间的密码键名称必须完全相同。否则,ACCESSDATA 命令会失败。

  7. 如果您未从具有屏蔽认证值的密码键名称中移除 [$pwd],请使用用来指定单个密码定义的方法。

    例如:

    ACCESSDATA64 CONNECTOR NAME "Twitter" PASSWORD 1 AS oauthclientid PASSWORD 2 AS oauthclientsecret PASSWORD 3 AS oauthaccesstoken PASSWORD 4 ...SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=[$pwd]; ...)

    结果ACCESSDATA 命令以及单独创建的密码定义现在可以在导入脚本中使用,而无需在 SOURCE 连接设置中显示明文认证值。

多因素认证不合适

您不能使用 ACCESSDATA 命令访问要求多因素认证 (MFA) 的数据源,因为脚本不能以此方式进行认证。如果您需要访问用 MFA 保护的数据,请查看您的组织是否允许使用不要求 MFA 的通用工作者帐户。

数据连接器更新

当您升级 Analytics机器人代理时,应该使用一个 Analytics 数据连接器(ACCESSDATA 命令)测试用于导入数据的脚本。

由第三方数据源或 ODBC 驱动程序供应商进行的更改可能要求更新一个或多个数据连接器。脚本化数据连接可能需要更新以便继续正确工作。

  • 重新运行导入更新连接的最轻松方式是使用 Analytics 升级版本中的数据访问窗口手动执行导入。从日志复制 ACCESSDATA 命令并使用它更新您的脚本。

    说明

    在连接到数据源并重新运行导入之前,请清除连接器缓存以冲刷现有的表名称集。

    数据访问窗口现有连接选项卡中,在连接器名称旁边选择 > 清除缓存

  • 更新域规范您还可能需要更新脚本主体中的域规范以匹配数据源或 ODBC 驱动程序中的表架构更改。可能的更改包括域名称、域数据类型、域和记录长度。
  • 检查任何过滤的结果您还应该检查您在数据导入过程中应用的任何过滤的结果。确认导入过滤是否正确地包含和排除了记录。

创建 ODBC 连接设置和 SQL 导入语句

ODBC 连接设置和 SQL 导入语句通常很冗长和复杂,如示例所示。

创建 ACCESSDATA 命令的这些部分的最简单方式是首先使用 Analytics 中的数据访问窗口连接到目标数据源,然后导入数据。然后,您可以从日志复制整个 ACCESSDATA 命令(包括连接设置和导入语句),并且按您需要的任何方式自定义该命令。

ACCESSDATA 日志文件

两个日志文件记录与 ACCESSDATA 命令相关联的交易,如果数据连接失败,则可用于排除故障:

  • ServerDataAccess.log会在导入数据之前记录所有活动和错误

    位置:C:\Users\<user account>\AppData\Local\ACL\ACL for Windows\Data Access\ServerDataAccess.log

    说明

    ServerDataAccess.log 中的“Server”是指在安装了 Analytics 的计算机上本地运行的 Analytics 的数据访问组件。

  • DataAccess.log记录有关导入操作和您要向其导入数据的 Analytics 项目的信息

    位置:..\<Analytics project folder>\DataAccess.log

将用 ACCESSDATA 哈希的数据与用 ACL脚本 HASH( ) 函数哈希的数据进行比较

尽管您无法读取哈希数据的原始值,但在组合或者分析数据时,它仍然是有用的。

如果您想要将导入过程中 ACCESSDATA 哈希值与使用 ACL脚本 的 HASH( ) 函数哈希的值进行比较,您必须将任何 Analytics 数值域或日期时间域转换为字符值,并且在对数据进行哈希处理之前消除所有前导和后继空格。

日期时间域在被转换为字符时必须使用下列格式:

  • 日期时间"YYYY-MM-DD hh:mm:ss"
  • 日期"YYYY-MM-DD"
  • 时间"hh:mm:ss"

以下示例在使用 ACL脚本 的 HASH( ) 函数对该值进行哈希处理之前,使用 STRING( ) 和 ALLTRIM( ) 函数将数值类型信用卡号域转换为字符数据:

COMMENT 在导入数据之后使用的 ACL HASH 函数
HASH(ALLTRIM(STRING(CC_No, 16)), "QZ3x7")

在对 Analytics 值进行哈希处理之后,您可以将其与在 ACCESSDATA 命令导入过程中进行哈希处理的值进行比较。

并行导入多个 SAP 表

如需将多个 SAP 表导入 Analytics 作为后续分析的基础,最快速且最高效的方法是从 SAP 系统并行(或异步)下载这些表,然后再将其导入 Analytics。虽然一次只能同时下载五个表,但是对于可以指定异步下载的表总数没有限制。

脚本编写指南

请遵循以下指南,编写并行下载和后续导入 SAP 表的脚本:

  • ACCESSDATA 命令块创建 ACCESSDATA 命令块,每个命令对应要下载的一个 SAP 表。ACCESSDATA 命令块必须是连续的,没有其他类型的 ACL脚本 命令介入。

  • 使用正确的位数使用 64 位版本的 ACCESSDATA 命令 (ACCESSDATA64)。如果安装了 32 位版本的 SAP GUI for Windows,则可以使用 ACCESSDATA32。但是,建议您使用 ACCESSDATA64,避免可能出现的内存异常。如果安装了 64 位版本的 SAP GUI,则必须使用 ACCESSDATA64。有关 SAP GUI的更多信息,请参阅为 SAP 设置 ACL 连接器

    不能在同一个 ACCESSDATA 命令块中混用 ACCESSDATA64 与 ACCESSDATA32。

  • ASYNC 参数每个 ACCESSDATA 命令都必须使用 ASYNC 参数。不能在命令块中混合异步与同步 SAP 下载。

  • 连接字符串块中的所有命令都必须使用同一连接字符串来连接到同一个 SAP 服务器。

  • GETSAPDATA 命令最后一个 ACCESSDATA 命令的后面紧跟着 GETSAPDATA 命令。除了 COMMENT 命令,任何其他类型的 ACL脚本 命令都无法干预。

    在并行下载 SAP 表之后,GETSAPDATA 命令会将下载生成的 Analytics 表导入 Analytics 项目。如果 ACCESSDATA 命令块中的任何下载操作失败,则 GETSAPDATA 命令也会失败;即使已成功下载某些 SAP 表,也不会将其添加到 Analytics 项目。

 

使用 SAP 连接器,并行下载和导入多个 SAP 表

您需要从三个 SAP 表中下载并导入数据,作为后续分析的基础:

  • T001
  • T002
  • T003

最高效的方法就是并行下载这些表。组合一组 ACCESSDATA 命令,一个命令对应一个表。每个命令都使用 ASYNC 参数,指定三个并行执行的下载操作(即,异步执行)。

在执行 ACCESSDATA 命令块之后,您可以使用 GETSAPDATA 命令将下载的表导入 Analytics 项目。

COMMENT 并行下载三个 SAP 表

ACCESSDATA64 CONNECTOR NAME "SAP" USER "irosario" PASSWORD 1 TO "T001.FIL" CHARMAX 50 MEMOMAX 100 ASYNC SOURCE(server=192.0.2.255;client=800;language=EN;instancenumber=01;variablestringlength=256;TemporaryWorkingDirectory=Default)
  SQL_QUERY(
    SELECT * FROM T001
  ) END_QUERY

ACCESSDATA64 CONNECTOR NAME "SAP" USER "irosario" PASSWORD 1 TO "T002.FIL" CHARMAX 50 MEMOMAX 100 ASYNC SOURCE(server=192.0.2.255;client=800;language=EN;instancenumber=01;variablestringlength=256;TemporaryWorkingDirectory=Default)
  SQL_QUERY(
    SELECT * FROM T002
  ) END_QUERY

ACCESSDATA64 CONNECTOR NAME "SAP" USER "irosario" PASSWORD 1 TO "T003.FIL" CHARMAX 50 MEMOMAX 100 ASYNC SOURCE(server=192.0.2.255;client=800;language=EN;instancenumber=01;variablestringlength=256;TemporaryWorkingDirectory=Default)
  SQL_QUERY(
    SELECT * FROM T003
  ) END_QUERY COMMENT 将已下载的三个表导入 Analytics 项目 GETSAPDATA