开发者社区 问答 正文

从SQL Server表插入数据到Oracle数据库表与dblink使用SQL服务器

我有一个表在Oracle命名HR.ST_ADISYON_DETAY。 我可以发送选择命令,从那里获取数据等

SELECT TOP 100 * FROM OPENQUERY([HBT_CONNECTION] , 'select * from HR.ST_ADISYON_DETAY ORDER BY TARIH DESC');

我创建了dblink。 我dblink叫HBT_CONNECTION。 我想删除所有的数据表和Oracle数据库表中插入新的数据。 但是我找不到查询。 我如何删除和插入语句与数据库的链接。 我将把它写在SQL Server。

INSERT INTO HR.ST_ADISYON_DETAY(SICIL_KOD,AD_SOYAD,URUN,MIKTAR,BIRIM_FIYAT,TOPLAM,TARIH) SELECT SICIL_KOD,AD_SOYAD,URUN,MIKTAR,BIRIM_FIYAT,TOPLAM,TO_DATE(TARIH,'MM/DD/YYYY HH:MI:SS AM') FROM VIEW_HARCAMA_BYSICIL 从SQL Server选择部分。 插入部分是来自Oracle数据库。

展开
收起
SONGYiiiD 2019-12-04 21:54:42 2167 分享 版权
阿里云 AI 助理回答

在SQL Server中,如果你想通过DBLINK(数据库链接)删除Oracle表中的所有数据并插入新的数据,你需要分两步进行操作:先删除数据,然后插入新数据。由于你已经创建了到Oracle的DBLINK(HBT_CONNECTION),你可以直接在SQL Server中执行跨数据库的DELETE和INSERT语句。但请注意,直接从SQL Server管理Oracle数据库的数据可能受限于权限设置和DBLINK的配置。

删除数据

在SQL Server中,使用以下命令通过DBLINK删除Oracle表中的所有数据:

DELETE FROM OPENQUERY(HBT_CONNECTION, 'SELECT * FROM HR.ST_ADISYON_DETAY');

这条命令会删除HR.ST_ADISYON_DETAY表中的所有记录,请确保在执行前已备份重要数据。

插入数据

接着,使用你提供的INSERT语句将SQL Server视图VIEW_HARCAMA_BYSICIL中的数据插入到Oracle表中。但是,需要注意的是,你的INSERT语句需要稍作调整以适应通过DBLINK操作,并且要确保日期格式转换正确。以下是修改后的示例:

INSERT INTO OPENQUERY(HBT_CONNECTION, 'SELECT SICIL_KOD, AD_SOYAD, URUN, MIKTAR, BIRIM_FIYAT, TOPLAM, TARIH FROM HR.ST_ADISYON_DETAY')
SELECT SICIL_KOD, AD_SOYAD, URUN, MIKTAR, BIRIM_FIYAT, TOPLAM, 
       CONVERT(VARCHAR, TARIH, 101) + ' ' + CONVERT(VARCHAR(8), TARIH, 108) AS TARIH_FORMATTED 
FROM VIEW_HARCAMA_BYSICIL;

这里假设TARIH字段在VIEW_HARCAMA_BYSICIL视图中是一个可以被转换为字符串表示的日期时间类型。我使用了CONVERT函数来格式化日期时间值以便与Oracle的日期格式兼容,但具体的转换格式可能需要根据实际情况调整,确保它能被Oracle正确识别。

注意: - 在实际操作之前,请务必确认DBLINK的权限设置允许执行这些操作。 - 对于日期格式的转换,确保它符合Oracle数据库期望的格式,通常Oracle接受的日期字符串格式为'YYYY-MM-DD HH24:MI:SS',因此可能需要进一步调整转换逻辑。 - 考虑到性能和数据完整性,如果数据量大,建议分批处理或在Oracle端使用存储过程处理。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答