我是Oracle的新手,我正在努力将特定数据从一台服务器上的数据库移动到另一台服务器上的数据库.
这两个DB具有相同的模式,但我想拉出其键引用的特定列,并将数据移动到其他服务器中.我想弄清楚对此最好的攻击方案是什么.
一种允许命令行的方法,我可以输入我想要移动的数据的键.是否有可能用PLSQL脚本完成?
谢谢.
我有一个名为USERS的表,我从中获得了员工的名字和姓氏,然后将它们打印成一个名字.如何在此数据上正确使用ORDER BY?
这就是我所拥有的:
SELECT l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) AS "Employee Name"
FROM LOCAL_OFFICE l, USERS us
WHERE l.LOCAL_OFFICE_ID = us.LOCAL_OFFICE_ID
ORDER BY l.OFFICE_NAME --what do I place here?--
Run Code Online (Sandbox Code Playgroud)
我将通过JOIN而不是更昂贵的FROM来完成此操作,但如何按字母顺序排序?
是
SELECT COUNT(a.attr)
FROM TABLE a
Run Code Online (Sandbox Code Playgroud)
相当于
SELECT B
FROM (SELECT COUNT(a.attr) as B
FROM TABLE a)
Run Code Online (Sandbox Code Playgroud)
我猜不会,但我不确定.
我也假设答案对于像min,max,avg这样的函数是一样的,对吗?
编辑:
这完全出于好奇,我还是新手.下面的计数和上面的计数返回的值是否有差异?
SELECT B, C
FROM (SELECT COUNT(a.attr) as B, a.C
FROM TABLE a
GROUP BY c)
Run Code Online (Sandbox Code Playgroud)
再次编辑:我研究过,经验教训:当我尝试了解这些事情时,我应该保持清醒.
在PL SQL中,我正在编写一个使用DB链接的存储过程:
CREATE OR REPLACE PROCEDURE Order_Migration(us_id IN NUMBER, date_id in DATE)
as
begin
INSERT INTO ORDERS(order_id, company_id)
SELECT ORDER_ID_SEQ.nextval, COMPANY_ID
FROM ORDERS@SOURCE
WHERE USER_ID = us_id AND DUE_DATE = date_ID;
end;
Run Code Online (Sandbox Code Playgroud)
它会在特定日期由特定用户完成所有订单并将其插入新数据库中.它调用一个序列来确保订单上没有重复的PK,并且效果很好.
但是,我希望使用相同的过程对另一个将order_id作为外键的表执行第二次INSERT.所以我需要添加刚刚创建的所有order_id,以及来自SOURCE的匹配数据:
INSERT INTO ORDER_COMPLETION(order_id, completion_dt)
SELECT ????, completion_dt
FROM ORDER_COMPLETION@SOURCE
Run Code Online (Sandbox Code Playgroud)
如何跟踪刚刚创建的order_id与我需要从源数据库中提取数据的order_id相匹配?
我考虑制作一个临时表,但你不能在程序中创建它们.
其他信息:我将从我正在编写的C#应用程序中调用此过程
我正在尝试插入一个表,其中ID是序列中的下一个,其他一些值是从表中提取的.我知道这不起作用:
INSERT INTO ORDERS(order_id, foo1, foo2, foo3
VALUES(SEQUENCE_ORDERS.nextval,(SELECT foo1, foo2, foo3
FROM bar
WHERE X = Y))
Run Code Online (Sandbox Code Playgroud)
我刚试过,而且我得到了"没有足够的价值"错误.
我想知道正确的语法是什么让它工作.我在Oracle DB中使用PLSQL(我正在编写的程序的一部分).
我知道选择不应该在VALUES()内,但我如何添加序列?我能想到的唯一选择是插入的触发器,但我宁愿不必这样做.
编辑:谢谢大家,正如我想的那样,每个人都发布了.不知道在选择中有序列是可以的.