使用BigQuery导入Excel文件遇‘Bad character (ASCII 0)’错误求助
解决BigQuery导入Excel文件时的ASCII 0字符错误问题
核心问题排查
你当前操作的关键错误是将Excel文件(.xlsx)以CSV格式导入——Excel是二进制格式,BigQuery按CSV解析时会读取到无效二进制字符(包括ASCII 0),这是报错的主要原因。以下是几种可行的解决方法:
方法一:转换为干净的CSV后导入
- 彻底清除ASCII 0字符:
在Excel中对所有单元格使用组合函数替换空字符:=SUBSTITUTE(CLEAN(A1), CHAR(0), ""),下拉应用到所有列后,复制并粘贴为值。 - 正确导出CSV:
- 点击「文件」→「另存为」,选择格式为CSV (逗号分隔)(*.csv)
- 保存时选择「仅保存活动工作表」(若有多工作表),编码选择UTF-8(部分Excel版本需通过「工具」→「Web选项」→「编码」设置)
- 上传并导入:
将处理后的CSV上传到GCS,再通过BigQuery创建表菜单选择CSV格式,自动检测Schema即可。
方法二:直接导入Excel文件(无需转CSV)
BigQuery原生支持.xlsx格式导入,无需手动转CSV:
- 在BigQuery创建表菜单中,「文件格式」选择Excel而非CSV
- 若文件包含多工作表,指定要导入的工作表名称(默认导入第一个)
- 开启「自动检测Schema」,完成导入配置后执行创建操作
方法三:用命令行工具导入(适合批量或复杂场景)
使用bq命令行工具直接导入Excel文件,避免GUI的格式识别问题:
# 基本导入命令(自动检测Schema,导入第一个工作表) bq load --source_format=EXCEL --autodetect your_dataset.your_table gs://nyc-car-crashes/Motor_Vehicle_Collisions_Details.xlsx # 指定工作表导入 bq load --source_format=EXCEL --autodetect --sheet="Sheet1" your_dataset.your_table gs://nyc-car-crashes/Motor_Vehicle_Collisions_Details.xlsx
额外验证步骤
如果转换后的CSV仍有ASCII 0字符,可使用文本编辑器(如Notepad++)打开:
- 开启「视图」→「显示符号」→「显示所有字符」,查找
NUL标记(即ASCII 0) - 全选替换为空字符,保存后再上传
内容的提问来源于stack exchange,提问作者bentley1990
相关产品推荐
相关产品推荐

