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

求助:如何用SQL*Loader将CSV空数据加载至TABLE_NULL表?

解决CSV NULL数据筛选导入TABLE_NULL的问题

我来帮你搞定这个空值筛选的问题~首先得搞清楚CSV里的"NULL数据"到底是什么形式——有时候是真正的空值,有时候是空字符串,甚至可能是写了'NULL'的字符串,不同情况对应不同的判断方式,下面给你几个可行的方案:

方案1:针对真正的空值(不是空格/字符串)

如果CSV里的NULL是原生的空值(不是填了空格或者'NULL'字符串),那直接用IS NULL判断就对了:

INSERT INTO TABLE_NULL
SELECT * FROM your_csv_source
WHERE <COLUMN_NAME> IS NULL;

要是你用的是类似Snowflake的COPY INTO这类加载语句,对应的WHEN条件应该写成:

COPY INTO TABLE_NULL
FROM @your_stage/your_file.csv
FILE_FORMAT = (TYPE = CSV)
WHEN <COLUMN_NAME> IS NULL;

方案2:处理空字符串或空白字符

如果你的"NULL数据"其实是空字符串'',或者是一堆空格/不可见的空白字符,那可以用这两种方式判断:

  • 精准匹配空字符串:
INSERT INTO TABLE_NULL
SELECT * FROM your_csv_source
WHERE <COLUMN_NAME> = '';
  • 匹配所有空白(不管多少空格、制表符都能覆盖):
INSERT INTO TABLE_NULL
SELECT * FROM your_csv_source
WHERE TRIM(<COLUMN_NAME>) = '';

加载语句里的WHEN条件也可以这么写:

COPY INTO TABLE_NULL
FROM @your_stage/your_file.csv
FILE_FORMAT = (TYPE = CSV)
WHEN TRIM(<COLUMN_NAME>) = '';

方案3:处理写了'NULL'的字符串

有些CSV会把空值存成字符串'NULL'(可能大写或小写),这时候就要匹配这个字符串:

INSERT INTO TABLE_NULL
SELECT * FROM your_csv_source
WHERE UPPER(<COLUMN_NAME>) = 'NULL';

要是想一步覆盖所有可能的空值场景,还可以把几个条件组合起来:

INSERT INTO TABLE_NULL
SELECT * FROM your_csv_source
WHERE <COLUMN_NAME> IS NULL 
   OR TRIM(<COLUMN_NAME>) = '' 
   OR UPPER(<COLUMN_NAME>) = 'NULL';

替代方案:先全量加载再拆分

要是上面的WHEN条件还是不好使,你可以换个思路:先把所有CSV数据加载到一个临时表,再拆分到两个目标表,这样更灵活:

  1. 先建临时表存全量数据:
CREATE TEMP TABLE TEMP_ALL_DATA AS
SELECT * FROM your_csv_source;
  1. 把非空数据导入TABLE_NOT_NULL:
INSERT INTO TABLE_NOT_NULL
SELECT * FROM TEMP_ALL_DATA
WHERE <COLUMN_NAME> IS NOT NULL 
  AND TRIM(<COLUMN_NAME>) != '' 
  AND UPPER(<COLUMN_NAME>) != 'NULL';
  1. 把空/NULL数据导入TABLE_NULL:
INSERT INTO TABLE_NULL
SELECT * FROM TEMP_ALL_DATA
WHERE <COLUMN_NAME> IS NULL 
   OR TRIM(<COLUMN_NAME>) = '' 
   OR UPPER(<COLUMN_NAME>) = 'NULL';

这样不管CSV里的空值是什么形式,基本都能覆盖到啦~


内容的提问来源于stack exchange,提问作者Rahul Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:26:31