要以开发人员身份执行查询导出,您需要 EXPORT 系统权限。
要导出过程的一个或多个查询,请使用以下语法:
EXPORT ALL AS CSV INTO [WITH ] ON FOR 存储导出文件的服务器路径指定为 <path>。
::= 有关
除 SELECT 语句外,您还可以导出以下语句类型:
INSERT、DELETE...)
CREATE TABLE, ...)
有关要导出查询的信息由
::= [{, }]
::= ( [ ] LINE [ COLUMN ] [ PASS ( | ALL)] )
::= [.]
::=
::=
::=
通过
您还需要指定行信息、
行和列信息通常包含在 SQLScript 生成的查询的注释中,可以从中获取。例如,监控视图 M_ACTIVE_PROCEDURES 或 PlanViz 中的语句统计信息显示执行的查询以及注释。
考虑以下两个过程:
1 CREATE PROCEDURE proc_one (...)
2 AS
3 BEGIN
...
15 tab = SELECT * FROM :t;
...
30 CALL proc_two (...);
...
98 END;
1 CREATE PROCEDURE proc_two (...)
2 AS
3 BEGIN
...
27 temp = SELECT * FROM :v; temp2 = SELECT * FROM :v2;
...
40 END;
如果要导出表变量 tab 和 temp 的两个查询,则应按如下方式配置
(proc_one LINE 15), (proc_two LINE 27 COLUMN 4)对于表变量 temp 的查询,我们已指定列编号,因为在一行中存在多个表变量分配,我们只想导出第一个查询。
要成功导出这些查询,导出流程需要执行触发包含查询的过程的执行的过程调用。因此,需要在导出配置中指定
::= CALL () 有关
以上给定示例的导出语句如下:
EXPORT ALL AS CSV INTO '/tmp' ON (proc_one LINE 15), ( proc_two LINE 27 COLUMN 4) FOR CALL PROC_ONE (...);如果要导出多次执行的查询,可以使用
1 CREATE PROCEDURE MYSCHEMA.PROC_LOOP (...)
2 AS
3 BEGIN
...
FOR i IN 1 .. 1000 DO
...
34 temp = SELECT * FROM :v;
...
37 END FOR;
...
40 END;
在上述示例中,我们要在第 34 行导出查询,但仅导出第 2 和第 30 个循环迭代的快照。考虑到过程调用为 PROC_LOOP,导出语句如下所示:
EXPORT ALL AS CSV INTO '/tmp' ON (myschema.proc_loop LINE 34 PASS 2), (myschema.proc_loop LINE 34 PASS 30) FOR CALL PROC_LOOP(...);如果要导出所有迭代的快照,则需要使用 PASS ALL:
EXPORT ALL AS CSV INTO '/tmp' ON (myschema.proc_loop LINE 34 PASS ALL) FOR CALL PROC_LOOP(...);SQLScript 查询导出功能使用以下名称模式为给定路径 <path> 下的每个导出查询创建一个子目录:
|_ /tmp
|_ MYSCHEMA-PROC_LOOP-34-10-2
|_Query.sql
|_index
|_export
|_ MYSCHEMA-PROC_LOOP-34-10-30
|_Query.sql
|_index
|_export
导出的 SQLScript 查询存储在名为 Query.sql 的文件中,该查询的所有相关基本对象都存储在目录索引和导出中,与典型目录导出相同。
可以使用 IMPORT 语句导入导出的对象,包括临时表及其数据。
有关 IMPORT 的详细信息,请参阅 SAP Help Portal 上 SAP HANA SQL 和系统视图参考中的 IMPORT 语句(数据导入导出)。
备注不支持函数中的查询,因此无法导出。 备注分布式系统不支持查询导出。仅支持单节点系统。