将数据从Oracle(SQL Developer)移动到MS SQL Server的有效方法

问题描述 投票:0回答:2

每天,我在SQL Developer中查询几个表,过滤到前一天的活动,添加列到日期标记数据,然后导出到xlsx。然后我通过SQL Server导入和导出向导手动将每个文件导入MS SQL Server。需要多次点击,等待很多...

我实际上是在SQL Server中创建一个存档,我查询的应用程序每天都会覆盖数据。我不是任何数据库的DBA,我使用存档数据进行验证和研究。

让我的组织提供额外的软件很难,我一直试图通过SQL Developer,SSMS Express ed和其他标准工具来完成这项工作。

我希望通过脚本,预定任务等方式使其合理自动化。欣赏可以解决我当前情况的建议,但如果这不合理,并且有一个非常合理的替代方案,我可以回到组织请求软件/访问/协助。

sqlite ssms plsqldeveloper sql-server-2014-express
2个回答
0
投票

您可以使用SSIS将数据直接从Oracle导入SQL Server,除非您将.xlsx文件用于其他目的。您也可以从Oracle导出到这些文件,然后在需要文件时从这些文件加载​​到SQL Server。对于日期戳列,可以使用SSIS GETDATE()函数在数据流任务中添加派生列以获取时间戳,以获得相同的结果。此函数返回时间戳,如果只需要日期,则(DT_DBDATE)函数可以将其强制转换为与此SQL Server数据类型兼容的日期数据类型。配置SSIS包后,您可以安排定期作为SQL代理作业运行。我还建议安装SSIS目录(SSISDB)并使用此源来运行包。以下链接为这些领域提供了更多信息。


0
投票

您可以考虑的另一个选项(如果SQL Express支持)是使用BCP实用程序,可以从命令行运行。

BCP实用程序允许您将分隔文本文件中的数据批量复制到SQL Server表中。

如果你采用这种方法,需要考虑的事项:

  • 源文件中的列数需要与目标中的列数相匹配
  • 数据类型必须匹配(或可比较)
  • 通常,空字符串将转换为空值,因此您需要考虑列是否可为空。

(仅举几例 - 如果你想深入研究,你可能还需要查看字段和记录之间的自定义分隔符。不要忘记,逗号和换行符仍然是char类型字段中的有效字符)。

无论如何,也许它会对你有用,也许不会。当然,您可能仍然需要处理从Oracle导出数据,但它可能会减轻获取数据的痛苦。

读一读:

https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-2017

© www.soinside.com 2019 - 2024. All rights reserved.