BigQuery长ID导出CSV后Excel科学计数法失真的查询优化方案
解决BigQuery导出CSV到Excel时ID被转科学计数法的问题
我之前也踩过Excel自动把长数字转成科学计数法的坑,给你几个亲测有效的解决方案,帮你保住ID的准确性:
方案一:添加零宽空格(肉眼不可见,最省心)
在ID前拼接一个零宽空格字符,Excel会把整个字段识别为文本,不会触发科学计数法转换,而且完全不影响ID的视觉显示。
修改后的查询语句:
SELECT CONCAT(UNICHAR(8203), subscription_id) AS Subscription_id FROM `ds.sites`, UNNEST(SubscriptionIds) subscription_id
解释:UNICHAR(8203) 是Unicode中的零宽空格,导出到CSV后肉眼看不到,但Excel会把它当作文本标识,彻底避免自动转换。
方案二:用单引号前缀(Excel自动隐藏前缀,显示原始ID)
如果觉得零宽空格有点“隐形操作”,可以给ID加一个单引号前缀——Excel会自动隐藏这个单引号,只显示后面的ID内容,同时强制识别为文本格式。
查询语句:
SELECT CONCAT("'", subscription_id) AS Subscription_id FROM `ds.sites`, UNNEST(SubscriptionIds) subscription_id
这个方法的好处是逻辑直观,导出后直接打开Excel就能看到正常的ID,不需要额外设置。
方案三:用双引号包裹 + 手动导入设置(适合需要严格保留原始格式的场景)
你之前尝试的CONCAT()加引号没生效,大概率是因为直接双击CSV文件时,Excel自动解析了引号并去掉,导致还是触发了科学计数法。试试这个步骤:
- 修改查询给ID加双引号:
SELECT CONCAT('"', subscription_id, '"') AS Subscription_id FROM `ds.sites`, UNNEST(SubscriptionIds) subscription_id
- 导出CSV后,不要直接双击打开,而是在Excel中通过「数据」→「自文本/CSV」导入文件,在导入向导里把
Subscription_id列的格式设置为「文本」,再完成导入。这样Excel会保留双引号包裹的文本格式,ID不会被转换。
为什么之前的CONCAT加引号没生效?
直接双击CSV文件时,Excel会自动按默认规则解析:如果单元格内容是纯数字,即使有引号,Excel可能会自动去除引号并将其识别为数字类型,进而触发科学计数法转换。所以要么用隐形字符强制文本,要么配合Excel的手动导入设置。
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

