作家指令

下面列出了Microsoft SQL Server Writer处理的指令。显示的后缀以当前前缀< WriterKeyword >在映射文件中。默认情况下,< WriterKeyword >Microsoft SQL Server的作者是MSSQL_ADO.

DataSet,Server,User_name,密码,USE_SSPI,ENCRYPT_CONNECTION,COMMAND_TIMEOUT

这些指令以与Microsoft SQL Server Reader的方式相同的方式操作。剩余的作者特定指令在以下部分中讨论。

START_TRANSACTION

要求/可选:可选

该语句告诉Microsoft SQL Server编写器模块何时开始将特性实际写入数据库。Microsoft SQL Server编写器不会编写任何特性,直到达到属于<上次成功的交易> + 1.指定零值会导致每个要输出的功能。通常,指定的值为零 - 仅在通过段落后失效后恢复数据负载操作时,仅指定非零值。

参数

内容

去年成功的事务> <

最后一个成功的事务的事务号。第一次加载数据时,将该值设置为0

默认值:0

例子:

MSSQL_ADO_START_TRANSACTION 0

Workbench参数:开始交易

TRANSACTION_INTERVAL

要求/可选:可选

在事务提交到数据库之前,该语句通知FME在每个事务中放置的特性的数量。

如果MSSQL_ADO_TRANSACTION_INTERVAL语句未指定,则使用值500作为事务间隔。

参数

内容

< transaction_interval >

单个事务中的特性数量。

默认值:500.

如果MSSQL_ADO_TRANSACTION_INTERVAL设置为零,则使用基于特性的事务。当编写器处理每个特性时,会检查它们是否调用了一个属性fme_db_transaction.此属性的值指定写入器是否应提交或回滚当前事务。属性的值可以是其中一个commit_before.commit_awter.ROLLBACK_AFTER或者忽略.如果fme_db_transaction属性未在任何特性中设置,则整个写入操作在单个事务中发生。如果fme_db_transaction属性未在任何特性中设置,则整个写入操作在单个事务中发生。

具体而言,值fme_db_transaction可以是:

  • COMMIT_BEFORE:在将该特性添加到新事务之前提交当前事务。
  • COMMIT_AFTER:将功能添加到当前事务,然后提交事务。
  • ROLLBACK_AFTER:将该特性添加到当前事务中,然后回滚事务。也就是说,当前事务中的任何特性都不会被提交。
  • 忽略:该特性被添加到当前事务中。

如果在特性上找不到该属性,则将值设为忽略假设。

例子:

MSSQL_ADO_TRANSACTION_INTERVAL 5000

Workbench参数:交易时间间隔

BULK_INSERT

必需的/可选

可选

BULK_INSERT选项将插入模式从逐个特性更改为批处理。这可以使插入速度提高6到10倍。妥协是降低错误的粒度,一个无效的特性可能会导致完整事务的失败。

注意:批量插入的速度将随着事务大小的增加而增加(事务越少=插入越快)。更大的事务大小还意味着,如果事务失败,需要重新插入更多行。

在Azure中,Bulk_Insert非常重要,因为插入速度提高了300倍。但是,要使Bulk模式与Azure一起工作,必须更改SERVER_NAME和USER_NAME参数。

SERVER_NAME = tcp: SERVERNAME.database.windows.net

USER_NAME = USERNAME@SERVERNAME

其余参数可以保持不变。

如果BULK_INSERT未指定语句,则给出了否的值。BULK_INSERT可以设置为“YES”或“NO”。

工作台参数

批量插入

BEGIN_SQL {n}

有时,必须先在打开表之前执行一些SQL语句。例如,可能需要确保在尝试读取之前存在视图。

在打开连接从数据库中读取数据时,读取器会查找指令< ReaderKeyword > _BEGIN_SQL {n}(n0, 1, 2,……),并将每个此类指令值作为数据库连接的SQL语句执行。

属性指定的字符可以分隔多个SQL命令FME_SQL_DELIMITER指令,嵌入在SQL块的开头。此指令之后的单个字符将用于将SQL块拆分为SQL语句,然后将发送到数据库以进行执行。注意:在字符前加一个空格。

例如:

FME_SQL_DELIMITER;删除从讲师;删除姓='Doe',名='John'的人

不允许有多个分隔符,在发送到数据库之前,分隔符字符将被剥离。

在执行这些SQL语句期间发生的任何错误通常都会以错误终止读取器或写入器(取决于SQL语句的执行位置)。如果指定的语句前面有连字符(" - "),则此类错误将被忽略。

必需的/可选

可选

工作台参数

开始SQL.

END_SQL {n}

有时,您必须在读取一组表之后执行一些SQL语句。例如,在创建临时视图之后,可能需要清理它BEGIN_SQL

在关闭数据库上的连接之前,读取器会查找该指令< ReaderKeyword > _END_SQL {n}(n0, 1, 2,……),并将每个此类指令值作为数据库连接的SQL语句执行。

属性指定的字符可以分隔多个SQL命令FME_SQL_DELIMITER指令,嵌入在SQL块的开头。此指令之后的单个字符将用于将SQL块拆分为SQL语句,然后将发送到数据库以进行执行。注意:在字符前加一个空格。

例如:

FME_SQL_DELIMITER;删除从讲师;删除姓='Doe',名='John'的人

不允许有多个分隔符,在发送到数据库之前,分隔符字符将被剥离。

在执行这些SQL语句期间发生的任何错误通常都会以错误终止读取器或写入器(取决于SQL语句的执行位置)。如果指定的语句前面有连字符(" - "),则此类错误将被忽略。

必需的/可选

可选

工作台参数

最终的SQL