我需要将BigQuery的大型表格(2B记录)以csv格式传输到云存储。我正在使用控制台进行传输。
由于文件的大小,我需要指定一个包含*的uri来对导出进行分片。我最终在云存储中有400个csv文件。每个都有一个标题行。
这使得组合文件非常耗时,因为我需要将csv文件下载到另一台机器,去掉标题行,合并文件,然后重新上传。 FY,组合csv文件的大小约为48GB。
对此有更好的方法吗?
答案 0 :(得分:4)
使用API,您将能够告诉BigQuery在表提取期间不打印标题行。这可以通过将configuration.extract.printHeader
选项设置为false
来完成。有关详细信息,请参阅the documentation。命令行实用程序也应该能够做到这一点。
完成此操作后,连接文件会更容易。在Linux / Mac计算机中,它将是一个cat
命令。但是,您也可以尝试使用compose
操作直接从云存储连接。 See more details here。可以从API或命令行实用程序执行合成。
由于合成操作仅限于32个组件,因此您必须在32个文件后编写32个文件。这应该为400个文件进行大约13次合成操作。请注意,我从未尝试过合成操作,所以我只是猜测这一部分。
答案 1 :(得分:0)
在控制台中,使用bq实用程序剥离标题:
bq --skip_leading_rows 1