BigQuery导入本地CSV文件后两列值异常问题求助
排查BigQuery导入CSV后School_Name/School_Code列值异常的思路与解决办法
一、先确认CSV文件本身的内容是否正确
- 用纯文本编辑器(比如Notepad++、VS Code)打开CSV,别用Excel(避免自动格式转换或隐藏字符),重点检查:
- School_Name和School_Code列的实际值,有没有真的是空值或者不符合预期的内容
- 列顺序是否和BigQuery表的Schema完全对应,会不会是列错位导致数据填到了错误的字段里
- CSV的分隔符是否正确(比如是不是用了分号而非逗号),分隔符不对会直接导致列解析混乱
- 空值的表示:CSV里的空单元格是不是被写成了'NULL'字符串、空格或者其他特殊字符,BigQuery没识别成NULL反而填充了默认值
二、检查BigQuery导入时的参数配置
- 导入过程中盯着这几个关键参数:
- 字段分隔符:必须和CSV实际用的分隔符一致,错了就会列映射错误
- 跳过表头:如果CSV有表头行,一定要勾选这个选项,不然表头会被当成数据行,后面的列全乱套
- 空值处理:确认导入设置里是否把CSV的空值正确解析为BigQuery的NULL,而不是自动填充'Default'或'0'
- 允许字段省略:如果CSV里这两列确实存在空值,必须开启这个选项,防止BigQuery强制填充默认值满足约束
三、验证BigQuery表的Schema配置
- 打开表的Schema详情,检查这两个列的属性:
- 有没有设置默认值约束(比如DEFAULT 'Default'、DEFAULT '0'),要是有,导入时空值会被自动替换成默认值
- 列的模式(Mode)是不是NULLABLE,如果设成了REQUIRED,BigQuery会自动填默认值来满足非空要求
- 确认数据类型确实是STRING,别误设成INTEGER或者其他类型,导致转换出错
四、测试小批量数据导入
- 从原CSV里截个10行左右的小样(要包含空值和非空值的情况),存成新的CSV文件,导入到临时表试试:
- 如果小样导入正常,说明原CSV大概率有格式问题(比如某一行有未闭合的引号,导致后面的列解析全乱)
- 如果小样还是异常,那问题肯定在Schema或者导入参数上,再针对性排查
五、排查CSV的编码问题
- 检查CSV的编码格式(比如UTF-8、GBK),BigQuery默认认UTF-8,要是CSV是其他编码,可能导致字符解析错误,触发默认值填充
- 可以把CSV转成UTF-8编码后再重新导入
内容的提问来源于stack exchange,提问作者MMM KKK
相关产品推荐
相关产品推荐

