使用SSMS导入向导和查询来更新行的ORACLE到MSSQL

时间:2018-08-21 18:28:26

标签: sql-server oracle import updating

我遇到的一种情况使我无法更新MSSQL中的表中的行以从ORACLE获取数据。我可以使用SELECT语句从ORACLE插入到MS SQL很好,

SELECT XRECORDACTIVATIONDATE, XRECORDCUTOFFDATE, XRECORDREVIEWDATE,
XRECORDFILINGDATE, XNOLATESTREVISIONDATE, XNEWREVISIONDATE, XDATERECEIVEDDOC,
XINACTIVEDATE, DCREATEDATE, DINDATE, DRELEASEDATE, DLASTMODIFIEDDATE
FROM STELLENT.V_EXPORT_TO_MSSQL V

但是当我尝试使用以下方法基于唯一ID更新行时:

UPDATE D
SET D.XRECORDACTIVATIONDATE = V.XRECORDACTIVATIONDATE
FROM DBO.DOCUMENT D
INNER JOIN STELLENT."V_EXPORT_TO_MSSQL" V ON D.DID = V.DID

我收到以下错误:

ORA-00933: SQL command not properly ended
 (System.Data.OracleClient)

DBO.DOCUMENT是一个MSSQL表。 STELLENT.V_EXPORT_TO_MSSQL是ORACLE中的视图

我可能在查询中写错了,我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

Lukasz是正确的-select语句与insert语句有很多不同。

ORA-00933错误表示您的查询格式不正确。这是因为在Oracle中,数据库希望查询遵循某种格式/标准。通常,Oracle中的查询将在[条件]和[表]中采用SELECT [列]的形式。这可能会有所不同-例如,如果您想从表中选择所有数据,该查询可能看起来像“ SELECT * FROM [table];”。和WHERE子句可以省略,因为您不需要定义数据库返回所有行的条件。尽管查询的形式可能有所不同,但通常它们将遵循某种类型的格式。

您收到此错误的原因是您的查询不符合预期的形式,这是因为您的INNER JOIN直接位于FROM子句之后。要解决此问题,我建议创建一个查询,用于选择要更新的记录,然后使用该select语句通过将“ SELECT”替换为“ UPDATE”来形成更新语句。

有关SQL标准以及如何格式化查询的更多信息,建议您阅读Oracle文档。 https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_1001.htm#SQLRF52344