![](/img/trans.png)
[英]How small should a table using Diststyle ALL be in Amazon Redshift?
[英]How to reduce the time to write pandas dataframes as table in Amazon Redshift
我正在使用這個在 Amazon Redshift 中編寫 python pandas 數據框 -
df.to_sql('table_name', redshiftEngine, index = False, if_exists = 'replace' )
雖然我的數據框只有幾千行和 50-100 列,但寫一張表需要 15-20 分鍾。 我想知道這是否是紅移的正常表現? 有什么辦法可以優化這個過程,加快寫表的速度嗎?
更好的方法是使用pandas
將數據框存儲為CSV,然后將其上傳到S3,然后使用COPY
功能加載到Redshift中。 這種方法甚至可以輕松處理數億行。 通常,Redshift的寫入性能不是很好-它用於處理由大量ETL操作(如COPY
)轉儲的數據負載。
我同意將數據上傳到 Redshift 的更好方法是將文件作為 .csv 文件上傳到 S3 存儲桶,然后從那里讀取文件。
首先,將文件保存為.csv 文件。 如果您在 excel 中這樣做,那么 select 'CSV UTF-8(逗號分隔)' 可以正確處理特殊字符。 然后運行這些代碼(相應地修改部分)。 這是一個兩列表; 如果您有更大的桌子,請添加更多。
DROP TABLE IF EXISTS table.table;
CREATE TABLE IF NOT EXISTS table.table
(
col1 VARCHAR(1024) ENCODE lzo,
col2 VARCHAR(1024) ENCODE lzo
);
copy table.table
from 's3://address/address/address/file_name.csv'
CREDENTIALS 'aws_access_key_id=#################;aws_secret_access_key=####################'
FORMAT CSV
DELIMITER ','
IGNOREHEADER 1
region 'region_name'
--ACCEPTINVCHARS
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.