首页 > 解决方案 > 以雪花二进制数据类型存储照片(JPG)

问题描述

以雪花二进制数据类型存储照片(大小<1MB)的步骤是什么?

标签: binarysnowflake-cloud-data-platform

解决方案


您需要将图像编码为 HEX 或 BASE64,然后将它们加载到 BINARY 列中。有关更多详细信息,请参阅https://docs.snowflake.com/en/user-guide/binary-input-output.html。正如其他人所提到的,这不太适合 Snowflake,您可能需要考虑仅存储对图像的引用(路径/url)并将它们存储在其他地方。

这是使用 Python 连接器存储图像的一种方法。

import snowflake.connector
import base64
import requests


# Assumes create or replace TABLE IMAGE (C1 BINARY);

conn = snowflake.connector.connect(**your_params)

sql = f"""insert into image values (to_binary('{base64.b64encode(requests.get('https://www.google.com/s2/favicons?domain=google.com').content).decode('ascii')}', 'BASE64'));"""
conn.cursor().execute(sql)

# Optionally, to display the image
import io
from PIL import Image
im = conn.cursor().execute("select * from image").fetchall()
with io.BytesIO(im[0][0]) as f:
    display(Image.open(f))

推荐阅读