作家指令
下面列出了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}(n=0, 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}(n=0, 1, 2,……),并将每个此类指令值作为数据库连接的SQL语句执行。
属性指定的字符可以分隔多个SQL命令FME_SQL_DELIMITER
指令,嵌入在SQL块的开头。此指令之后的单个字符将用于将SQL块拆分为SQL语句,然后将发送到数据库以进行执行。注意:在字符前加一个空格。
例如:
FME_SQL_DELIMITER;删除从讲师;删除姓='Doe',名='John'的人
不允许有多个分隔符,在发送到数据库之前,分隔符字符将被剥离。
在执行这些SQL语句期间发生的任何错误通常都会以错误终止读取器或写入器(取决于SQL语句的执行位置)。如果指定的语句前面有连字符(" - "),则此类错误将被忽略。
必需的/可选
可选
工作台参数
最终的SQL