You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将数据加载至Snowflake表,遇“数值未识别”错误

问题:Databricks加载含特殊字符的字符串到Snowflake时类型转换错误

在Databricks Python笔记本里用这段代码往Snowflake表导数据时出错:

CAST(O.ITEM_PRODUCT_NAME::TEXT AS VARCHAR) AS PRODUCT_NAME

错误提示:

100038 (22018): Numeric value 'SAaL Tuvarinerine Neano sBites (53mg x 30) 100mg (S) (100mg, case of 60)' is not recognized

要导入的字符串混合了字母、数字和特殊字符,需要以字符串类型存入Snowflake,示例数据如下:

Select as Elites Cartsridge - 1g 20box GSC (1g) FND,PRE-ROLL,(S) QUEENt OF SOUL,,,1G (1g, case of 25) CL Lord Flower Trim Preroll 1g (H) (1.0g, case of 300) Blueberry Indica 10 Padfck Gusgmmies (100mg THC, case of 50) SELECT Disphdosable Cart - Tangie - 0.3g (0.3g, case of 20) Grassrootds Shorties Pre-Rolls It's Mimosa (2g, case of 10) Capsulses - East Coast Sour Diesel RSO - 10mg (10pk, 100mg) (10mg. 10pk

解决方案
  • 简化转换逻辑,避免多余嵌套:
    Snowflake里TEXT和VARCHAR是兼容类型,没必要嵌套转换。直接用下面的写法就能确保字段被识别为字符串:

    O.ITEM_PRODUCT_NAME::VARCHAR AS PRODUCT_NAME
    

    如果Databricks里的ITEM_PRODUCT_NAME本身就是字符串类型,甚至可以直接用,不用显式转换:

    O.ITEM_PRODUCT_NAME AS PRODUCT_NAME
    
  • 检查Snowflake目标表字段类型:
    先确认Snowflake表中PRODUCT_NAME字段是VARCHAR(或TEXT)类型,别设成了数值类型(比如INT、FLOAT)。要是字段类型错了,怎么转换都会报错,得先改表结构:

    ALTER TABLE 你的表名 ALTER COLUMN PRODUCT_NAME SET DATA TYPE VARCHAR(255);
    
  • 确认Databricks端的数据类型:
    在Databricks里检查ITEM_PRODUCT_NAME列是不是string类型,如果是其他类型(比如variant),先在Databricks转成字符串再写入Snowflake:

    df = df.withColumn("ITEM_PRODUCT_NAME", df["ITEM_PRODUCT_NAME"].cast("string"))
    # 这里写后续写入Snowflake的代码
    

内容的提问来源于stack exchange,提问作者bigdata techie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:30:10