我正在使用cx_Oracle模块连接到oracle数据库。在脚本中,我使用了两个变量schema_name和table_name。下面的查询可以正常工作
cur1.execute("select owner,table_name from dba_tables where owner ='schema_name'")
但是我需要查询表的行数,其中我需要用schema_name限定table_name,因此查询应该是
SELECT count(*) FROM "schema_name"."table_name"
这在代码中使用时不起
我们有一个Oracle 10g,大多数应用程序都在运行OracleForms6i。我发现在视图/包/过程/函数中编写的所有查询都是在WHERE子句级别连接表。示例
SELECT * FROM
TABLE_A A,
TABLE_B B,
TABLE_C C,
TABLE_D D
WHERE
A.ID=B.ID(+)
AND B.NO=C.NO(+)
AND C.STATUS=D.ID
AND C.STATUS NOT LIKE 'PENDING%'
此查询仅适用于ORACLE,因为它具有(+)联接限定符,这在其他SQL平台中是不可接受的。上述查询相当于:
我对这类查询产生了怀疑。我正在将ETL从Access迁移到SSIS。一个查询涉及与Oracle数据库中的表的内连接:
SELECT
SQL_TABLE.COLUMN1,
SQL_TABLE.COLUMN2,
ORACLE_TABLE.COLUMN5,
ORACLE_TABLE.COLUMN6
FROM
SQL_TABLE INNER JOIN ORACLE_TABLE ON
SQL_TABLE.ID_PPAL = ORACLE_TABLE.IDENTIF
WHERE
(((ORACLE_TABLE.COLUMN6) Is Not Null));
问题是,Oracle表有超过1800万个寄存
我在一个表中有三列
Column names with datatypes
First_week - Number
Days - Number
Second_week- Number
Column Values
8
6
11
我希望将这些值连接起来,使结果返回8/6/11如果列值中的任何一个为null,则连接必须为8/-/11如果所有列值都为null,则结果必须为-/-/-如何在oracle查询中实现这一点?
我正在使用SSIS合并连接sql服务器数据(左)和oracle数据(右)。在合并连接之前,两个数据集都是在源位置排序的。当oracle源只返回一行时,它工作得很好,但当它返回多行时就不行了。即使有几行有匹配的数据,合并连接后也不会返回数据。下面是我的流程:
更多信息:
两者都是预先排序的(源查询中的order by )。oracle源列EXTERNLAL_ID在查询中被转换为整数,即CAST(EXTERNAL_ID AS INTEGER),因此在合并连接之前,两个连接键都以DT_I4结束。
示例: SQL Server source有三行,UNIQUEID:1,2,3;Or
假设我们有以下五个DB表: Employee、Client、Month、Onsite和Payment。
给定以下(Oracle) SQL查询:
select * from onsite o
join client c on o.client_id = c.client_id
left join payment p on (o.client_id = p.client_id and o.employee_id = p.employee_id and o.month_cd = p.month_cd)
where p.payout_date is null and c.name = 'exa
我在sql服务器管理演播室中创建了与oracle数据库( 12c )的链接服务器。我正在将本地用户映射到oracle中的一个特殊远程用户。连接正常。奇怪的是,我能够从所有模式中看到所有表。
我尝试了以下查询
SELECT *
FROM OPENQUERY(ORCL_LINK, 'SELECT table_name, owner FROM all_tables ORDER BY owner, table_name')
因此,我看到了所有的模式和表。当我在我的oracle数据库中运行这个查询时,我只会看到选项卡。
我认为链接的服务器连接在远程用户的安全上下文中运行,但情
我试图在管理帐户下的Oracle中的单个SQL查询中创建一系列表。在下面的最小脚本中,RAW_TABLE引用了一个现有的表。
CREATE TABLE BASE1 AS SELECT * FROM RAW_TABLE;
CREATE TABLE BASE2 AS SELECT * FROM BASE1;
CREATE TABLE BASE3 AS SELECT * FROM BASE2;
SELECT * FROM BASE3
这将返回BASE3中前100行的视图,但它不会在此过程中创建三个表。我是遗漏了什么,还是Oracle中的create table语句有什么特殊之处?
编辑:环境是Ora
我有SQL Server表与应用程序和推送数据到oracle表(第三方)使用链接服务器。我想设置一个错误处理程序,如果插入不成功,则不会执行删除查询。下面是我每24小时在SQL Server代理中运行的查询。 DELETE FROM oracle_tbl --如果insert into不成功,则rollback否则commit-- INSERT INTO oracle_tbl
SELECT*
FROM
sqlserver_tbl
我需要在两个Oracle表之间做一个连接,然后通过Spark (用Java)处理数据。这样做的最佳选择是什么?-利用本机Oracle join功能,然后通过诸如"select * from table1,table2 where 1.fk= table2.pk“之类的查询在Spark中加载单个数据集或利用Spark连接功能加载2个不同的数据集(每个Oracle表一个),然后通过dataset函数Dataset.join执行连接?
谢谢!
我有三个Oracle数据库连接(XE、XE_HR和XE_SBD_HR)。
我尝试使用HR密码与固定用户创建私有数据库链接,并在XE_SBD_HR上使用以下查询:
CREATE DATABASE LINK DATABASE_LINK_1 CONNECT TO HR IDENTIFIED BY HR USING 'HR';
但现在,当我想从表中获取数据时:
SELECT * FROM COUNTRIES@DATABASE_LINK_1;
SQL Error: ORA-12154: TNS:could not resolve the connect identifier