簡體   English   中英

使用 SQL 從數據庫視圖而不是表中讀取

[英]Read from a database view rather than a table using SQL

我正在嘗試從我使用 Python 根據我的數據庫中的其他視圖創建的視圖中讀取數據。

數據庫設置:

Redshift-postgres
  dev
    Schemas
      schema_name
        Tables
          table_name
        Views
          view_name

蟒蛇代碼:

connection=psycopg2.connect("dbname=dev host=redshift.amazonaws.com port=5439 user=user password=password")

cursor = connection.cursor()
schema = "SELECT count(*) FROM schema_name.table_name;"
schema2 = "SELECT count(*) FROM schema_name.view_name;"
result = pd.read_sql(schema, connection)

當我使用schema運行代碼時,它會從表中返回數據,但是當我嘗試運行schema2它不返回任何內容,也沒有提供任何錯誤消息。 腳本不會停止它只是空閑。

嘗試從視圖而不是表中獲取數據時,我做錯了什么嗎?

更新

當我運行schema2 = "SELECT * FROM INFORMATION_SCHEMA.TABLES;" 它確實返回以下內容:

table_catalog    table_schema   table_name  table_type 
dev              schema_name    view_name         VIEW    

它列出了我試圖從中讀取數據的視圖。

我創建了這樣的視圖:

CREATE OR REPLACE VIEW schema_name.view_name
AS SELECT *
        CASE
            WHEN statement
            ELSE false
        END AS column_name, 

   FROM schema_name.another_view_name
   LEFT JOIN schema_name.another_view_name_2 data_1 ON data_2 = data_3
   LEFT JOIN schema_name.another_view_name_3 data_4 ON data_5 = data_6

我有一個名為irelevant數據data_x ,我加入基於某些條件的意見。

結果發現 amazon redshift DB 被阻塞了,有 5 個查詢運行了 4 天沒有響應。 無論如何,我仍然發現從具有 2 個左連接的視圖中閱讀需要 3 個小時才能閱讀,這不是它應該如何工作的。 該視圖只有 1.2m 行。 謝謝你的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM