我将excel表读入datagrid.从那里,我已经设法将网格的行读入DataTable对象.DataTable对象具有数据,因为当我使网格的数据源与该表对象相等时,将填充网格.
我的问题:我想使用表对象并使用SQL服务器操纵它的值(即我想将它存储为临时表并使用C#代码中的SQL查询对其进行操作,我希望它返回不同的结果inte一个网格.(我不知道如何使用C#中的临时表)
这是单击按钮时执行的代码....
SqlConnection conn = new SqlConnection("server = localhost;integrated security = SSPI");
//is connection string incorrect?
SqlCommand cmd = new SqlCommand();
//!!The method ConvertFPSheetDataTable Returns a DataTable object//
cmd.Parameters.AddWithValue("#table",ConvertFPSheetDataTable(12,false,fpSpread2_Sheet1));
//I am trying to create temporary table
//Here , I do a query
cmd.CommandText = "Select col1,col2,SUM(col7) From #table group by col1,col2 Drop #table";
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText,conn);
DataTable dt = new DataTable();
da.Fill(dt); ***// I get an error here 'Invalid object name '#table'.'***
fpDataSet_Sheet1.DataSource = dt;
//**NOTE:** fpDataSet_Sheet1 …Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
SET @SQL1 = 'SELECT * INTO #temp WHERE ...'
exec(@SQL1)
SELECT * from #temp (this line throws an error that #temp doesn't exist)
Run Code Online (Sandbox Code Playgroud)
显然这是因为exec命令会旋转一个单独的会话,而#temp是该会话的本地会话.我可以使用全局临时表## temp,但是我必须提出一个命名方案来避免冲突.你们都推荐什么?
我正在使用pgAdmin用于我的Postgres 8.4数据库,我想知道在哪里(任何表/模式/等?)我可以找到当前使用的临时表的列表?我认为必须有一个我能找到它的地方.
它们不存在于目录对象表中,也不存在于视图中,还有其他任何建议吗?
我试图在Android中创建一个临时表(sqlite)
这是代码片段:
// No error - But cannot create TEMP table
database.rawQuery("CREATE TEMP TABLE IF NOT EXISTS tt1 (unread_message int, target varchar)", null);
// Error - android.database.sqlite.SQLiteException: no such table: tt1: , while compiling: INSERT INTO tt1 SELECT count(*), target FROM messages where read_status=0 and direction=1 GROUP BY target
database.rawQuery("INSERT INTO tt1 SELECT count(*), target FROM messages where read_status=0 and direction=1 GROUP BY target", null);
Run Code Online (Sandbox Code Playgroud)
创建TEMP TABLE查询没有错误,但它抱怨tt1在第二个查询中不存在.我是以错误的方式创建TEMP表吗?
我有一个存储过程创建临时表.它只需要这个存储过程的范围,而不是其他地方.
当我使用临时表列出这个时,我总是检查临时表是否存在,如果存在则删除它,然后在存储过程中创建它.即:
IF OBJECT_ID('tempdb..#task_role_order') IS NOT NULL
DROP TABLE #task_role_order
CREATE TABLE #task_role_order(...)
Run Code Online (Sandbox Code Playgroud)
大多数情况下,除了在创建临时表之前,最好先删除临时表吗?
如果需要更多上下文,我有一个.NET Web API后端,它调用数据库中的存储过程.我相信当SQL Server会话结束时,SQL Server会丢弃临时表.但我不知道.NET每次查询数据库时是打开一个新的SQL Server会话,还是每个应用程序生命周期只打开一次,等等.
我读过这个类似的问题,但认为它略有不同.
我正在尝试使用Postgres的tablefunc扩展CROSSTAB功能对某些数据执行数据透视操作.数据需要首先进行一些转换,我在一些常见的表表达式中执行.
但是,它似乎CROSSTAB无法看到那些表达式的结果.
例如,从临时表中获取数据的查询工作正常:
CREATE TEMPORARY TABLE
temporary_table
(name, category, category_value)
ON COMMIT DROP
AS (
VALUES
('A', 'foo', 1 ),
('A', 'bar', 2 ),
('B', 'foo', 3 ),
('B', 'bar', 4 )
);
SELECT * FROM
CROSSTAB(
'SELECT * FROM temporary_table',
$$
VALUES
('foo'),
('bar')
$$
) AS (
name TEXT,
foo INT,
bar INT
);
Run Code Online (Sandbox Code Playgroud)
并且,如预期的那样,产生以下输出:
name | foo | bar
text | integer | integer
---- | ------- …Run Code Online (Sandbox Code Playgroud) 我试图使用临时表与SQLAlchemy,并将其连接到现有的表.这就是我到目前为止所拥有的
engine = db.get_engine(db.app, 'MY_DATABASE')
df = pd.DataFrame({"id": [1, 2, 3], "value": [100, 200, 300], "date": [date.today(), date.today(), date.today()]})
temp_table = db.Table('#temp_table',
db.Column('id', db.Integer),
db.Column('value', db.Integer),
db.Column('date', db.DateTime))
temp_table.create(engine)
df.to_sql(name='tempdb.dbo.#temp_table',
con=engine,
if_exists='append',
index=False)
query = db.session.query(ExistingTable.id).join(temp_table, temp_table.c.id == ExistingTable.id)
out_df = pd.read_sql(query.statement, engine)
temp_table.drop(engine)
return out_df.to_dict('records')
Run Code Online (Sandbox Code Playgroud)
这不会返回任何结果,因为插入语句to_sql不会运行(我认为这是因为它们运行使用sp_prepexec,但我不完全确定).
然后,我尝试只是写出来的SQL语句(CREATE TABLE #temp_table...,INSERT INTO #temp_table...,SELECT [id] FROM...),然后运行pd.read_sql(query, engine).我收到错误消息
此结果对象不返回行.它已自动关闭.
我想这是因为声明不仅仅是SELECT?
我该如何解决这个问题(任何一个解决方案都可以工作,虽然第一个会更好,因为它避免了硬编码的SQL).要清楚,我无法修改现有数据库中的模式 - 它是供应商数据库.
如何插入命令给出的结果集
RESTORE FILELISTONLY
RESTORE HEADERONLY
RESTORE VERIFYONLY
Run Code Online (Sandbox Code Playgroud)
进入自动生成的临时表?
我想使用类似的技术(因此表是自动创建的,所有列都匹配结果集的列)
SELECT * INTO #TempTable
FROM (RESTORE FILELISTONLY FROM DISK = 'c:\Test\Test.bak')
Run Code Online (Sandbox Code Playgroud)
但这不起作用.如果我可以填充TempTable,那么我就可以在下面的SQL语句中使用它中包含的信息(在我的例子中是一个恢复DB语句,我需要使用RESTORE FILELISTONLY给出的结果集中包含的一些字符串)
我正在使用sql server 2008.
我刚刚了解了全局临时表(我使用oracle作为db)并理解它们但却无法知道它们的确切用法.
顾名思义,它们用于保存临时数据/会话,在结束会话时,该会话的数据将消失.
什么是示例,我们需要使用它们的业务用例.
我想创建一个临时表并在redshift中调用此临时表?我试过这个,但得到了一条错误信息.
select top 10 * into #a from public.item_activity where item_act_timestamp < DATEADD(day,-1,getdate());
select * from #a
Run Code Online (Sandbox Code Playgroud)
"错误:42P01:关系"#a"不存在"
temp-tables ×10
sql-server ×4
postgresql ×2
sql ×2
android ×1
c# ×1
crosstab ×1
java ×1
oracle ×1
pandas ×1
pgadmin ×1
pivot ×1
python ×1
session ×1
sqlalchemy ×1
sqlite ×1
t-sql ×1