标签: temp-tables

在全局临时表中加载数据

我在同一个Oracle用户上有两个不同的Oracle会话("会话A"和"会话B").

在"会话A"中填充全局临时表,其中包含大约320,000条记录.

如何在"会话B"的全局临时表中快速插入相同的320,000条记录?

提前感谢您的善意建议!

编辑:我忘了指定我只允许创建全局临时表.

编辑:我忘了指定我不允许创建数据库链接

sql oracle temp-tables

3
推荐指数
1
解决办法
1863
查看次数

替代Oracle中的MySQL临时表

我注意到这两个系统中临时表的概念是不同的,我有一个冥想......我在MySQL中有以下场景:

  1. 删除临时表'a'(如果存在)
  2. 创建临时表'a'
  3. 通过存储过程使用数据填充它
  4. 使用另一个存储过程中的数据

如何在Oracle中实现相同的方案?我可以(在一个程序中更可取)创建一个临时表,填充它,并在另一个(非临时)表中插入数据吗?

我认为我可以使用在提交时截断的(全局)临时表,并避免步骤1和2,但我也需要别人的意见.

mysql oracle temp-tables

3
推荐指数
1
解决办法
2093
查看次数

如何将存储过程#1的结果存入存储过程#2中的临时表

我试图将几个存储过程的结果合并到一个临时表中.各种存储过程的结果具有相同的列结构.从本质上讲,我想UNION ALL各种存储过程的结果.一个重要的事实:每个存储过程都创建一个临时表来存储其数据,每个返回的结果都基于对临时表的选择:

create proc SP1    
as
 .
 .  <snip>
 .
 select * from #tmp   -- a temporary table
Run Code Online (Sandbox Code Playgroud)

注意,select * from OPENQUERY(server, 'exec SP1')如果SP1中的select对临时表不起作用(有关详细信息,请参阅此问题),是否有另一种方法可以将不同的存储过程SP2发送到临时表中执行SP1的结果?

  create proc SP2 as
  -- put results of executing SP1 into a temporary table:
  .
  .
  .
Run Code Online (Sandbox Code Playgroud)

注意:无法修改SP1(例如,将其结果存储在具有会话范围的临时表中).

stored-procedures temp-tables sql-server-2012

3
推荐指数
1
解决办法
1万
查看次数

如何更新#temptable

CREATE TABLE #TempProducts (
    Id uniqueidentifier,
    ManufacturerId uniqueidentifier,
    Number varchar(50),
    PresentId uniqueidentifier null)
Run Code Online (Sandbox Code Playgroud)

如何更新 PresentId 字段?我在这方面有不同的错误:

1) 数据库中已有一个名为“#TempProducts”的对象。

UPDATE #TempProducts
SET #TempProducts.PresentId = p.Id
FROM #TempProducts JOIN Products p ON (#TempProducts.ManufacturerId = p.ManufacturerId AND #TempProducts.Number = p.Number)
WHERE #TempProducts.Id <> p.Id
Run Code Online (Sandbox Code Playgroud)

2) 无法绑定多部分标识符“t.PresentId”。

UPDATE #TempProducts
SET t.PresentId = p.Id
FROM #TempProducts t JOIN Products p ON (t.ManufacturerId = p.ManufacturerId AND t.Number = p.Number)
WHERE t.Id <> p.Id
Run Code Online (Sandbox Code Playgroud)

sql t-sql temp-tables

3
推荐指数
1
解决办法
7万
查看次数

Postgres:我需要在每个会话中创建临时表吗?

在我的应用程序中,我需要创建几个临时表。我是否需要在每个会话中执行 SQL 来创建临时表,否则我可以手动运行一次 SQL,并且可以在每个会话中使用这些临时表吗?

database postgresql temp-tables

3
推荐指数
1
解决办法
937
查看次数

如何将查询的输出存储到临时表中并在新查询中使用该表?

我有一个 MySQL 查询,它使用 3 个表和 2 个内部联接。然后,我必须从这个查询输出中找到一个组的最大值。将它们结合起来超出了我的范围。我可以通过将第一个复杂查询的输出存储到某种临时表中,给它一个名称,然后在新查询中使用这个表来分解问题吗?这将使代码更易于管理。感谢您的帮助。

mysql temp-tables

3
推荐指数
1
解决办法
3858
查看次数

临时表:CREATE 与 SELECT INTO

我搜索并找到了这篇关于 SQL Server 中临时表的文章,因为我在我们的一个存储过程中遇到了一行说:

SELECT Value SomeId INTO #SomeTable FROM [dbo].[SplitIds](@SomeIds, ';')
Run Code Online (Sandbox Code Playgroud)

我知道它#SomeTabletempdb作为临时表存储的。但是,我不明白为什么我们不必先使用,CREATE TABLE #SomeTable因为它是在提到的文章中写的。我们的代码运行良好,我只是不明白为什么使用SELECT ... INTO #SomeTable. CREATE TABLE #SomeTable一开始加的话会有什么后果?我们会得到性能上的任何差异吗?该表会存储在另一个位置吗?

t-sql sql-server temp-tables sql-server-2014

3
推荐指数
1
解决办法
4622
查看次数

无法在视图定义 PostgreSQL 中创建临时表

CREATE  VIEW  viewRebalancingLog AS


CREATE TEMP TABLE newSessionID
(
  ilog_id INT,vch_service_name VARCHAR(200), vch_service_id  VARCHAR(200),iuser_id INT,vch_session_id  VARCHAR(200),
  isequence_id INT,vch_message_type  VARCHAR(200),vch_message_sub_type  VARCHAR(200),vch_message  VARCHAR,
  dt_service_log_time TIMESTAMP,dt_inserted_date TIMESTAMP
)


 INSERT INTO newSessionID
      ("ilog_id", "vch_service_name", "vch_service_id"  , "iuser_id" , "vch_session_id"  , "isequence_id" ,
  "vch_message_type"  ,"vch_message_sub_type","vch_message","dt_service_log_time","dt_inserted_date"
)
SELECT
     "LOGS"."ilog_id", "LOGS"."vch_service_name","LOGS"."vch_service_id","LOGS"."iuser_id" ,"LOGS"."vch_session_id"  ,
  "LOGS"."isequence_id" ,"LOGS"."vch_message_type"  ,"LOGS"."vch_message_sub_type" ,"LOGS"."vch_message",
  "LOGS"."dt_service_log_time","LOGS"."dt_inserted_date"
  FROM services_logs_stg AS "LOGS"
   WHERE ("LOGS".dt_service_log_time AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York') :: DATE =
         (((NOW() -
           INTERVAL '2 day')  :: TIMESTAMP) AT TIME ZONE 'UTC' AT …
Run Code Online (Sandbox Code Playgroud)

sql postgresql view temp-tables postgresql-9.4

3
推荐指数
1
解决办法
1710
查看次数

获取 SQL Server 临时表列类型

我正在将 CSV 加载到这样的临时表中:

select * 
into #Temp
from openrowset('Microsoft.ACE.OLEDB.12.0', 
                'Text;Database=D:\DataFolder;', 
                'SELECT * from [DataFile.csv]') as x;
Run Code Online (Sandbox Code Playgroud)

OLEDB 驱动程序确定每列的类型。

但是临时表不会出现在INFORMATION_SCHEMA.COLUMNS.

如何确定结果#Temp表中每一列的数据类型?

sql-server metadata temp-tables

3
推荐指数
1
解决办法
3771
查看次数

尝试将熊猫数据框插入临时表

我正在寻找创建一个临时表并向其中插入一些数据。我已经广泛使用 pyodbc 来提取数据,但我不熟悉从 python 环境将数据写入 SQL。我在工作中这样做,所以我没有能力创建表,但我可以创建临时表和全局临时表。我的意图是将一个相对较小的数据帧(150 行 x 4cols)插入到临时表中并在我的整个会话中引用它,我的程序结构使得会话中的全局变量不够用。我在尝试时收到以下错误下面的一块,我做错了什么?

pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'sqlite_master'. (208) (SQLExecDirectW); [42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)")

import numpy as np
import pandas as pd
import pyodbc


conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=SERVER;'
                      'Database=DATABASE;'
                      'Trusted_Connection=yes;')

cursor = conn.cursor()

temp_creator = '''CREATE TABLE #rankings (Col1 int, Col2 int)'''

cursor.execute(temp_creator)

df_insert = pd.DataFrame({'Col1' : [1, 2, 3], 'Col2':[4,5,6]})
df_insert.to_sql(r'#rankings', conn, if_exists='append')
read_query = '''SELECT * FROM #rankings''' …
Run Code Online (Sandbox Code Playgroud)

sql-server temp-tables pyodbc python-3.x pandas

3
推荐指数
1
解决办法
5537
查看次数