Java MS SQL->;mySQL转换

Java MS SQL->;mySQL转换,java,jdbc,resultset,Java,Jdbc,Resultset,我正在工作中构建一个应用程序,需要一些建议。我有一个比较独特的问题,我需要收集存放在MS SQL Server中的数据,并每隔15分钟将其移植到mySQL服务器 我以前用C#和DataGrid做过这件事,但现在我正在尝试构建一个可以在Ubuntu服务器上运行的Java版本,但是我找不到类似的Java模型 只是给你一点背景 当我从MS SQL Server中提取数据时,它总是有9列,但可以有0-1000行 在盲目地插入mySQL服务器之前,我确实操作了一些数据 我基于状态列将时间列转换为CST

我正在工作中构建一个应用程序,需要一些建议。我有一个比较独特的问题,我需要收集存放在MS SQL Server中的数据,并每隔15分钟将其移植到mySQL服务器

我以前用C#和DataGrid做过这件事,但现在我正在尝试构建一个可以在Ubuntu服务器上运行的Java版本,但是我找不到类似的Java模型

只是给你一点背景

当我从MS SQL Server中提取数据时,它总是有9列,但可以有0-1000行

在盲目地插入mySQL服务器之前,我确实操作了一些数据

  • 我基于状态列将时间列转换为CST
  • 我去掉了一些字符以防止SQL注入
我尝试使用ResultSet,但我对“仅转发结果集”规则有问题


<什么是最好的数据结构来保存信息,操作它,然后解析它以插入到MySQL?

< P>你可以考虑使用像Hibernate这样的ORM技术。一开始这看起来有点重,但这意味着您可以轻松地维护各种数据库的各种表映射,并且可以使用Java的正则表达式库来满足任何操作需求

因此,您将拥有一个表示源表(及其Hibernate映射)的Java类和另一个表示目标表的Java类,最后是一个对该数据进行任何操作的转换实用程序类。Hibernate为您处理CRUDSQL,因此无需担心特定于数据库的SQL(只要映射正确)


它还减少了SQL注入问题

这听起来像是PreparedStatements的工作

定义如下:

快速示例:

PreparedStatements允许您在将数据集推入目标数据库之前对数据集进行批处理。它们还允许您使用PreparedStatement.setString方法,该方法为您处理转义字符

对于时间转换,我将从行中检索状态值,然后检索时间值。调用PreparedStatement.setDate之前,如果需要,请将时间转换为CST


我认为您不需要ORM工具所需的所有开销。

如果您需要更具体的细节,请告诉我这是典型的SQL Server SSIS任务。为什么要从MS SQL数据库中获取的数据中剥离字符?如果你从数据库中获取它们,这应该在第一次保存它之前完成。同意,我的ORM是一个相当重的替代品,但我在过去使用过它,当时我知道我将在DB供应商之间进行大量交换+1 :-)