gpt4 book ai didi

linux - 如何使用 linux cmd 提示符压缩带有 unicode 编码的文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:37 24 4
gpt4 key购买 nike

我有很大的 tsv 格式文件 (30GB)。我必须将所有这些数据转换为 google bigquery。所以我将文件分成更小的 block 并将所有这些 block 文件 gzip 并移动到谷歌云存储。之后我调用了 google bigquery api 从 GCS 加载数据。但是我遇到了以下编码错误。

file_data.part_0022.gz: Error detected while parsing row starting at position: 0. Error: Bad character (ASCII 0) encountered. (error code: invalid)

我在我的 python 代码中使用以下 unix 命令来拆分和 gzip 任务。

cmd = [
"split",
"-l",
"300000",
"-d",
"-a",
"4",
"%s%s" % (<my-dir>, file_name),
"%s/%s.part_" % (<my temp dir>, file_prefix)
]

code = subprocess.check_call(cmd)
cmd = 'gzip %s%s/%s.part*' % (<my temp dir>,file_prefix,file_prefix)
logging.info("Running shell command: %s" % cmd)
code = subprocess.Popen(cmd, shell=True)
code.communicate()

文件已成功拆分和压缩(file_data.part_0001.gz、file_data.part_0002.gz 等),但当我尝试将这些文件加载​​到 bigquery 时,它会抛出上述错误。我知道那是编码问题。有什么方法可以在拆分和 gzip 操作时对文件进行编码吗?或者我们需要使用 python 文件对象逐行读取并进行 unicode 编码并将其写入新的 gzip 文件?(pythonic 方式)

最佳答案

原因:

Error: Bad character (ASCII 0) encountered

清楚地表明你有一个无法解码的 unicode (UTF-16) 制表符。BigQuery 服务仅支持 UTF-8 和 latin1 文本编码。因此,该文件应该是 UTF-8 编码的。


解决方案:我没有测试过。在 gzip 命令中使用 -a--ascii 标志。它会被 bigquery 解码。

关于linux - 如何使用 linux cmd 提示符压缩带有 unicode 编码的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39250544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com