【问题标题】:BigQuery SQL - Fixing Broken Special CharactersBigQuery SQL - 修复损坏的特殊字符
【发布时间】:2020-04-16 15:13:51
【问题描述】:

我们的表已加载了损坏的特殊字符,我正在尝试通过标准 SQL、临时 JS 函数或 BigQuery Web UI 中的其他方式进行修复。

破碎的文字是这样的: Décor 但应该是这样的:Dècor

我已经尝试了一些我在 SO 上找到的解决方案,包括 this one,但它们都不起作用。

有没有办法在 BigQuery 网页界面中使用标准 SQL、临时 JS 函数或其他方式进行修复?

【问题讨论】:

  • 显示更多损坏的例子
  • @MikhailBerlyant,现在就是这样,但我正在寻找一个全面的函数,其中通过函数传递的所有特殊字符都被正确转换。我已经搜索了很多,但似乎没有一个在用例中始终有效

标签: javascript google-bigquery special-characters


【解决方案1】:

如果你没有很多列,你可以使用REPLACE(brokencolumn, 'é', 'è')

如果您有很多列,您仍然可以使用它,但最好找到一种自动化方法来做到这一点:)

【讨论】:

  • 嗨,sabri,这可行,但我正在寻找一个更全面的解决方案,其中错误未知,但只要特殊字符通过此解决方案,它们就会被正确转换
【解决方案2】:

不确定这是否能回答您的问题,但我会将注意力集中在其他地方。 也就是说,如果我理解正确,当加载到您的 BigQuery 表“Décor”中时,为什么“Dècor”这个词会变成“Dècor”。

假设您有一个包含以下内容的 CSV 文件:

Dècor|Dècor|Dècor
Dècor|Dècor|Dècor

如果您在 BigQuery 中使用编码“ISO-8859-1”加载它,它会损坏。

bq load --autodetect --source_format=CSV  -field_delimiter="|"  -encoding='ISO-8859-1' mydataset.test_french gs://my-bucket/broken_french.csv

BigQuery 中的表如下所示:

Row string_field_0  string_field_1  string_field_2  
1    Dècor          Dècor          Dècor
2    Dècor          Dècor          Dècor

另一方面,如果你使用 'UTF-8' 编码,像这样:

bq load --autodetect --source_format=CSV  -field_delimiter="|"  -encoding='UTF-8' mydataset.test_french2 gs://my-bucket/broken_french.csv

BigQuery 中的结果看起来应该是这样的:

Row string_field_0  string_field_1  string_field_2  
1    Dècor            Dècor           Dècor
2    Dècor            Dècor           Dècor

所以,如果您使用错误的编码来加载数据,我会使用正确的编码重新加载它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多