当前位置:网站首页 > Java基础 > 正文

sql文件转json(sql转java)



“项目设置”对话框的“转换”页包含用于自定义 SQL Server 迁移助手 (SSMA) 如何将 Db2 语法转换为 SQL Server 语法的设置。

“项目设置”和“默认项目设置”对话框中提供了“转换”窗格:

  • 若要指定所有 SSMA 项目的设置,请在“工具”菜单上选择默认项目设置”,选择从“迁移目标版本”下拉列表查看或更改设置所需的迁移项目类型,然后选择左窗格底部的“常规,然后选择“转换”。
  • 若要指定当前项目的设置,请在“工具”菜单上选择“项目设置”,然后选择左窗格底部的“常规,然后选择“转换”。

指定 SSMA 在转换期间是否生成信息性消息、在“输出”窗格中显示这些消息,并将其添加到转换后的代码中。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:否

当转换 ROWNUM 表达式时,SSMA 会将表达式转换为一个 TOP 子句,后跟表达式。 以下示例演示 Db2 DELETE 语句中的 ROWNUM:

 
  

如下示例显示了所生成的 Transact-SQL:

 
  

TOP 要求 TOP 子句表达式的计算结果是一个整数。 如果整数为负数,则语句将生成错误。

  • 如果选择“是”,SSMA 会将表达式强制转换为整数。
  • 如果选择“ ”,SSMA 会将所有非整数表达式标记为已转换代码中的错误。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/完整模式:

乐观模式:是

此设置指定如何将 Db2 架构映射到 SQL Server 架构。 此设置提供了两个选项:

  1. 架构到数据库: 在此模式下,Db2 架构 默认映射到 SQL Server 数据库中 的 SQL Server 架构。
  2. 架构到架构: 在此模式下,Db2 架构 默认映射到 连接对话框中提供的默认 SQL Server 数据库中的 SQL Server 架构。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:架构到数据库

  • 如果选择“使用 INSERT、UPDATE、DELETE 语句”,SSMA 会将 MERGER 语句转换为 INSERT、UPDATE、DELETE 语句。
  • 如果选择“使用 MERGE 语句”,SSMA 会将 MERGER 语句转换为 SQL Server 中的 MERGE 语句。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:使用 MERGE 语句

SQL Server 函数不支持函数调用中参数的遗漏。 此外,SQL Server 函数和过程不支持表达式作为默认参数值。

  • 如果选择 “是 ”,函数调用省略参数,SSMA 会将关键字 默认值 插入函数,并在正确的位置调用。 然后,它会用警告标记调用。
  • 如果选择“ ”,SSMA 会将函数调用标记为错误。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

如果 COUNT 函数很可能返回大于 2,147,483,647(即 231-1)的值,则应将函数转换为 COUNT_BIG。

  • 如果选择“ ”,SSMA 会将 COUNT 的所有用途转换为COUNT_BIG。
  • 如果选择“ ”,函数将保留为 COUNT。 如果函数返回的值大于 231-1,则 SQL Server 将返回错误。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/完整模式:

乐观模式:否

定义 SSMA 如何处理 PL/SQL 集合元素上的 FORALL 循环。

  • 如果选择“是”,SSMA 将创建一个 WHILE 循环,在此循环中会逐个检索集合元素。
  • 如果选择“否”,SSMA 将使用 nodes( ) 方法从集合中生成一个行集,并将其用作单个表。 这种做法更高效,但输出代码的可读性欠佳。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:

Db2 允许创建外键约束,因为引用列中不允许使用 NUL,因此无法执行 SET 操作。 SQL Server 不允许此类外键配置。

  • 如果选择“ ”,则 SSMA 会像在 Db2 中一样生成引用操作,但在将约束加载到 SQL Server 之前需要进行手动更改。 例如,可以选择 NO ACTION 而不是 SET 。
  • 如果选择“ ”,约束将标记为错误。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

某些 Db2 函数定义为自治事务,或包含在 SQL Server 中无效的语句。 在这些情况下,SSMA 将创建一个过程和一个用作此过程的包装器的函数。 转换后的函数将调用实现过程。

SSMA 可以将对包装器函数的调用转换为对此过程的调用。 这样可以创建更具可读性的代码,并能够提高性能。 但是,上下文并不总是允许它;例如,不能将 SELECT 列表中的函数调用替换为过程调用。 SSMA 具有几个选项,可涵盖常见情况:

  • 如果选择“始终”,SSMA 会尝试将包装器函数调用转换为过程调用。 如果当前上下文不允许此转换,将会产生一条错误消息。 这样,所生成的代码中不会保留任何函数调用。
  • 如果选择“如果可能”,SSMA 将只在函数具有输出参数时才会转换为过程调用。 如果无法进行此转换,将会移除参数的输出属性。 在所有其他情况下,SSMA 都将保留函数调用。
  • 如果选择“ 永不”,SSMA 会将所有函数调用保留为函数调用。 有时,由于性能原因,此选项可能不能接受。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:如果可能

SSMA 可以将很多 LOCK TABLE 语句转换为表提示。 SSMA 无法转换包含 PARTITION、SUBPARTITION @dblink和 NOWAIT 子句的任何 LOCK TABLE 语句,并用转换错误消息标记此类语句。

  • 如果选择“是,SSMA 会将支持的 LOCK TABLE 语句转换为表提示。
  • 如果选择“ ”,SSMA 会标记所有 LOCK TABLE 语句并显示转换错误消息。

下表显示了 SSMA 如何转换 Db2 锁模式:

Db2 锁定模式 SQL Server 表提示 ROW SHARE ROWLOCK、HOLDLOCK ROW EXCLUSIVE ROWLOCK、XLOCK、HOLDLOCK SHARE UPDATE = ROW SHARE ROWLOCK、HOLDLOCK 共享 TABLOCK、HOLDLOCK SHARE ROW EXCLUSIVE TABLOCK、XLOCK、HOLDLOCK EXCLUSIVE TABLOCKX、HOLDLOCK

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

在 Db2 中,OPEN-FOR 语句可用于将结果集返回到 REF CURSOR 类型的子程序 OUT 参数。 在 SQL Server 中,存储过程直接返回 SELECT 语句的结果。

SSMA 可以将很多 OPEN-FOR 语句转换为 SELECT 语句。

  • 如果选择“是”,SSMA 会将 OPEN-FOR 语句转换为一个 SELECT 语句,该语句会将结果集返回给客户端。
  • 如果选择“ ”,SSMA 会在转换后的代码和“输出”窗格中生成错误消息。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

SSMA 可以将 Db2 记录转换为单独的变量和具有特定结构的 XML 变量。

  • 如果选择“是”,SSMA 会将记录转换为单独变量的列表(如果可能)。
  • 如果选择“否”,SSMA 会将记录转换为具有特定结构的 XML 变量。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

SSMA 可以根据参数数将 Db2 SUBSTR 函数调用转换为 SQL Server 字符串 函数调用。 如果 SSMA 无法转换 SUBSTR 函数调用,或不支持参数数,SSMA 会将 SUBSTR 函数调用转换为自定义 SSMA 函数调用。

  • 如果选择“是”,SSMA 会将使用三个参数的 SUBSTR 函数调用转换为 SQL Server 子字符串 SSMA 将转换其他 SUBSTR 函数,以调用自定义 SSMA 函数。
  • 如果选择“ ”,SSMA 会将 SUBSTR 函数调用转换为自定义 SSMA 函数调用。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:否

SSMA 可以通过两种方式转换 PL/SQL 子类型:

  • 如果选择“ ”,SSMA 将从子类型创建 SQL Server 用户定义的类型,并将其用于此子类型的每个变量。
  • 如果选择“ ”,SSMA 会将子类型的所有源声明替换为基础类型,并照常转换结果。 在这种情况下,不会在 SQL Server 中创建其他类型

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

可以将以下 Db2 对象的同义词迁移到 SQL Server:

  • 表和对象表
  • 视图和对象视图
  • 存储过程和函数
  • 具体化视图

可以通过直接引用对象替换以下 Db2 对象的同义词:

  • 序列
  • Java 类架构对象
  • 用户定义的对象类型

无法迁移其他同义词。 SSMA 为同义词和使用该同义词的所有引用生成错误消息。

  • 如果选择“是,SSMA 会根据前面的列表创建 SQL Server 同义词和直接对象引用。
  • 如果选择“ ”,SSMA 将为此处列出的所有同义词创建直接对象引用。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

SSMA 可以将 Db2 TO_CHAR(date, format) 转换为 sysdb 数据库中的过程。

  • 如果选择“使用 TO_CHAR_DATE 函数”,SSMA 会使用用于转换的英语语言将 TO_CHAR(date, format) 转换为 TO_CHAR_DATE 函数。
  • 如果选择“使用 TO_CHAR_DATE_LS 函数 (NLS care)”,SSMA 会使用用于转换的会话语言将 TO_CHAR(date, format) 转换为 TO_CHAR_DATE_LS 函数。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:使用 TO_CHAR_DATE 函数

完整模式:使用 TO_CHAR_DATE_LS 函数 (NLS care)

SSMA 可以转换 Db2 事务处理语句:

  • 如果选择“是,SSMA 会将 Db2 事务处理语句转换为 SQL Server 语句。
  • 如果选择“否”,SSMA 会将事务处理语句标记为转换错误。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

NULL 值在 SQL Server 和 Db2 中以不同的方式排序:

  • 在 SQL Server 中, 值是有序列表中的最小值。 在升序列表中, 值首先出现。
  • 在 Db2 中, 值是有序列表中的最大值。 默认情况下,在升序列表中,会最后显示 值。
  • Db2 具有 NULLS FIRST 和 NULLS LAST 子句,可用于更改 Db2 对 NUL 排序的方式。

SSMA 可以通过检查 值来模拟 Db2 ORDER BY 行为。 随后,它首先按指定顺序中的 值排序,然后按其他值排序。

  • 如果选择“是,SSMA 会以模拟 Db2 ORDER BY 行为的方式转换 Db2 语句。
  • 如果选择“ ”,SSMA 将忽略 Db2 规则,并在遇到 NULLS FIRST 和 NULLS LAST 子句时生成错误消息。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:

如果具有 INTO 子句的 SELECT 语句不返回任何行,Db2 将引发NO_DATA_FOUND异常。 如果此语句返回两个或更多的行,将会引发 TOO_MANY_ROWS 异常。 如果行计数不等于 1,SQL Server 中的转换语句不会引发任何异常。

  • 如果选择“是”,则 SSMA 会在每个 SELECT 语句后添加对 sysdb 过程 db_error_exact_one_row_check 的调用。 此过程模拟 NO_DATA_FOUND 和 TOO_MANY_ROWS 异常。 这是默认值,它允许尽可能接近复制 Db2 行为。 如果源代码具有处理这些错误的异常处理程序,则应始终选择“是”。 如果 SELECT 语句发生在用户定义的函数内,则此模块将转换为存储过程,因为执行存储过程并引发异常与 SQL Server 函数上下文不兼容。
  • 如果选择“ ”,则不会生成异常。 当 SSMA 转换用户定义的一个函数,而且用户希望它在 SQL Server 中保持为一个函数时,此设置非常有用。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

  • 如果选择“ 错误”,SSMA 会在转换DBMS_SQL生成错误。解析。
  • 如果选择“警告,SSMA 会在转换DBMS_SQL生成警告。解析。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:错误

当 SSMA 在 SQL Server 中创建表时,它可以创建一个 ROWID 列。 迁移数据之后,每行都会获取 newid() 函数生成的一个新 UNIQUEIDENTIFIER 值。

  • 如果选择“ ”,则会在所有表上创建 ROWID 列,SQL Server 会在插入值时生成 GUID。 如果计划使用 SSMA 测试器,请始终选择 “是 ”。
  • 如果选择“ ”,则不会向表添加 ROWID 列。
  • 为包含触发器 的表添加 ROWID 列,为包含触发器的表添加 ROWID(默认值)。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:为包含触发器的表添加 ROWID 列

完整模式:

指定 SSMA 是否在所生成的 ROWID 列上生成唯一索引列。 如果该选项设置为 ,则会生成唯一索引。 如果设置为 该索引,则不会在 ROWID 列上生成唯一索引。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

定义 Db2 嵌套子程序(在独立存储过程或函数中声明)转换的类型。

  • 如果选择 “内联”,则嵌套子程序调用将替换为其正文。
  • 如果选择 存储过程,则会将嵌套子程序转换为 SQL Server 存储过程,并在此过程调用上替换其调用。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:内联

当字符串串联包含 值时,Db2 和 SQL Server 返回不同的结果。 Db2 将 值视为空字符集。 SQL Server 将返回 。

  • 如果选择“ ”,SSMA 会将 Db2 串联字符 (||) 替换为 SQL Server 串联字符 (+)。 SSMA 还会检查串联两侧的表达式中是否存在 值。
  • 如果选择“否”,SSMA 将替换串联字符,但不检查 值。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

REPLACE 函数调用中使用 ISNULL 语句来模拟 Db2 行为。 此设置具有以下选项:

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:

ISNULL 语句用于 CONCAT 函数调用以模拟 Db2 行为。 此设置具有以下选项:

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:

  • 如果选择“是”,SSMA 会尽可能将 TO_CHAR(date, format) 转换为本机转换函数。
  • 如果选择“ ”,SSMA 会将TO_CHAR(日期、格式)转换为TO_CHAR_DATE或TO_CHAR_DATE_LS(由“转换TO_CHAR(日期,格式)”选项定义)。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观模式:

完整模式:否

指定在选择进入一个记录变量时是否生成一个 XML 结果集。

  • 如果选择“是”,SELECT 语句将返回 XML。
  • 如果选择“否”,SELECT 语句将返回一个结果集。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

Db2 提供 RETURNING 子句作为立即获取已删除值的方法。 SQL Server 将此功能与 OUTPUT 子句一同提供。

  • 如果选择“是,SSMA 会将 DELETE 语句中的 RETURNING 子句转换为 OUTPUT 子句。 由于表上的触发器可以更改值,因此返回的值在 SQL Server 中可能与 Db2 中的值不同。
  • 如果选择“ ”,SSMA 会在 DELETE 语句之前生成 SELECT 语句以检索返回的值。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

Db2 提供 RETURNING 子句作为立即获取插入值的方法。 SQL Server 将此功能与 OUTPUT 子句一同提供。

  • 如果选择“是,SSMA 会将 INSERT 语句中的 RETURNING 子句转换为 OUTPUT。 由于表上的触发器可以更改值,因此返回的值在 SQL Server 中可能与 Db2 中的值不同。
  • 如果选择“ ”,则 SSMA 通过插入和从引用表中选择值来模拟 Db2 功能。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

Db2 提供 RETURNING 子句作为立即获取更新值的方法。 SQL Server 将此功能与 OUTPUT 子句一同提供。

  • 如果选择“是,SSMA 会将 UPDATE 语句中的 RETURNING 子句转换为 OUTPUT 子句。 由于表上的触发器可以更改值,因此返回的值在 SQL Server 中可能与 Db2 中的值不同。
  • 如果选择“否”,SSMA 将在 UPDATE 语句之后生成 SELECT 语句,以检索返回值。

在“模式”框中选择转换模式后,SSMA 会应用以下设置:

默认/乐观/完整模式:

在 Db2 中,可以使用序列生成唯一标识符。

SSMA 可以将序列转换为以下内容。

  • 使用 SQL Server 序列生成器。
  • 使用 SSMA 序列生成器。
  • 使用列标识。

转换为 SQL Server 时的默认选项是使用序列生成器。 但是,SQL Server 2012 (11.x) 和 SQL Server 2014 (12.x) 不支持获取当前序列值(例如 Db2 序列 currval 方法)。 有关迁移 Db2 序列 currval 方法的指导,请参阅 SSMA 团队博客网站。

SSMA 还提供将 Db2 序列转换为 SSMA 序列模拟器的选项。

最后,还可以将分配给表中的一个列的序列转换为 SQL Server 标识值。 必须在 Db2 选项卡上指定序列与标识列之间的映射

只在“转换序列生成器”设置为“使用列标识”时可见。 由于 Db2 序列是独立于表的对象,因此许多使用序列的表使用触发器来生成和插入新的序列值。 SSMA 将为这些语句添加注释,或者在注释产生错误时将它们标记为错误。

  • 如果选择“是,SSMA 会用警告标记对转换后的序列 CURRVAL 上对外部触发器的所有引用。
  • 如果选择“ ”,SSMA 将标记对转换后的序列 CURRVAL 上所有触发器的引用,并显示错误。
  • 用户界面参考 (Db2ToSQL)
到此这篇sql文件转json(sql转java)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • java自学网站推荐(java自学课程较好的网站)2025-08-14 15:09:08
  • python爬虫和java爬虫性能比较(python爬虫和java爬虫哪个好)2025-08-14 15:09:08
  • pytorch模型部署到springbootweb(pytorch模型部署到java)2025-08-14 15:09:08
  • java的网站(java程序网站)2025-08-14 15:09:08
  • java阻塞队列实现(java阻塞是什么意思)2025-08-14 15:09:08
  • java内存模型jmm(Java内存模型和jvm内存模型)2025-08-14 15:09:08
  • java爬虫和java后端相比(爬虫和java区别)2025-08-14 15:09:08
  • Java阻塞队列(java阻塞队列是线程安全的吗)2025-08-14 15:09:08
  • java基础网站(java程序网站)2025-08-14 15:09:08
  • 字符串转int(java中字符串转int)2025-08-14 15:09:08
  • 全屏图片