Max*_*lot 1 csv google-bigquery
我想将 csv 数据上传到 BigQuery。当数据具有不同类型(如字符串和整数)时,它能够通过标题推断列名,因为标题都是字符串,而其他行包含整数。
BigQuery 通过将文件的第一行与数据集中的其他行进行比较来推断标题。如果第一行仅包含字符串,而其他行不包含,则 BigQuery 会假定第一行是标题行。
https://cloud.google.com/bigquery/docs/schema-detect
问题是当你的数据都是字符串时......
您可以指定--skip_leading_rows,但 BigQuery 仍然不使用第一行作为变量的名称。
我知道我可以手动指定列名,但我不想这样做,因为我有很多表。还有其他解决方案吗?
如果您的数据全部为“字符串”类型,并且您的 CSV 文件的第一行包含元数据,那么我想很容易创建一个快速脚本来解析 CSV 的第一行并生成类似的“创建表”命令:
bq mk --schema name:STRING,street:STRING,city:STRING... -t mydataset.myNewTable
Run Code Online (Sandbox Code Playgroud)
使用该命令创建一个新的(空)表,然后将 CSV 文件加载到该新表中(如您提到的那样使用 --skip_leading_rows )
2018 年 2 月 14 日:感谢 Felipe 的评论进行更新:
上面的评论可以这样简化:
bq mk --schema `head -1 myData.csv` -t mydataset.myNewTable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |