Google bigquery 将云存储中的文本文件(.txt)加载到大查询表中

Google bigquery 将云存储中的文本文件(.txt)加载到大查询表中,google-bigquery,google-cloud-storage,text-files,Google Bigquery,Google Cloud Storage,Text Files,我有一组文本文件,每5分钟上传一次到谷歌云存储中。我想每5分钟将它们放入BigQuery(因为文本文件每5分钟上传到云存储)。我知道文本文件不能上传到BigQuery。最好的方法是什么 文本文件的示例 提前感谢。您可以利用 使用架构(编辑为文本)文本:字符串 将.txt文件转换为.csv文件 从Google云存储创建BigQuery传输 将.csv文件上载到GCS存储桶中 检查您的转移是否成功 目前,这项服务每小时传输一次新添加的文件,传输速度很快 该服务将检查是否存在从将文件上载到bucke

我有一组文本文件,每5分钟上传一次到谷歌云存储中。我想每5分钟将它们放入BigQuery(因为文本文件每5分钟上传到云存储)。我知道文本文件不能上传到BigQuery。最好的方法是什么

文本文件的示例

提前感谢。

您可以利用

  • 使用架构(编辑为文本)文本:字符串
  • 将.txt文件转换为.csv文件
  • 从Google云存储创建BigQuery传输
  • 将.csv文件上载到GCS存储桶中
  • 检查您的转移是否成功
  • 目前,这项服务每小时传输一次新添加的文件,传输速度很快

    该服务将检查是否存在从将文件上载到bucket时起超过1小时的新文件,例如:

    • text1.csv于4:46上传
    • text2.csv于5:01上传
    • text3.csv于5:06上传
      结果:
    • 5:00的传输运行不会传输任何文件
    • 6:00的传输运行将传输text1.csv
    • 7:00的传输运行将传输text2.csv和text3.csv
    对于步骤2,您需要处理文本文件。我认为最简单的方法是使用.csv文件。 按如下方式编辑.txt文件:

    • 在正文的开头和结尾添加“我要去市场买蔬菜”等字符
    • “另存为”将文件另存为text1.csv
    • 命名文件,使其具有相同的开头字符,例如文本[…].csv,以便能够使用
    • 对下一个文件重复此操作(text2.csv、text3.csv、text4.csv…)
    您还需要确保以下几点:

    • 文本中不包含“字符-将其替换为”字符
    • 确保整个文本以换行符(EOF)的形式内联
    对于步骤3,请查找以下建议:

    • 时间表选项:
    自定义-->每1小时一次

    • 云存储URI:
    你的桶/你的文件夹/文本*

    传输将拾取以名称文本开头的所有文件

    • 写入首选项:
    附加

    • 文件格式:
    CSV

    对于步骤5,如果传输成功,则每小时执行一次。如果出现错误,将不会传输整批文件。使用(请参阅下面的命令)获取有关哪个文件存在问题以及错误性质的信息。您需要从bucket中删除相应的文件,更正并重新上传

    bq--format=prettyjson show-j[bqts_u…]

    也可以查看您传输的文本。

    您可以利用

  • 使用架构(编辑为文本)文本:字符串
  • 将.txt文件转换为.csv文件
  • 从Google云存储创建BigQuery传输
  • 将.csv文件上载到GCS存储桶中
  • 检查您的转移是否成功
  • 目前,这项服务每小时传输一次新添加的文件,传输速度很快

    该服务将检查是否存在从将文件上载到bucket时起超过1小时的新文件,例如:

    • text1.csv于4:46上传
    • text2.csv于5:01上传
    • text3.csv于5:06上传
      结果:
    • 5:00的传输运行不会传输任何文件
    • 6:00的传输运行将传输text1.csv
    • 7:00的传输运行将传输text2.csv和text3.csv
    对于步骤2,您需要处理文本文件。我认为最简单的方法是使用.csv文件。 按如下方式编辑.txt文件:

    • 在正文的开头和结尾添加“我要去市场买蔬菜”等字符
    • “另存为”将文件另存为text1.csv
    • 命名文件,使其具有相同的开头字符,例如文本[…].csv,以便能够使用
    • 对下一个文件重复此操作(text2.csv、text3.csv、text4.csv…)
    您还需要确保以下几点:

    • 文本中不包含“字符-将其替换为”字符
    • 确保整个文本以换行符(EOF)的形式内联
    对于步骤3,请查找以下建议:

    • 时间表选项:
    自定义-->每1小时一次

    • 云存储URI:
    你的桶/你的文件夹/文本*

    传输将拾取以名称文本开头的所有文件

    • 写入首选项:
    附加

    • 文件格式:
    CSV

    对于步骤5,如果传输成功,则每小时执行一次。如果出现错误,将不会传输整批文件。使用(请参阅下面的命令)获取有关哪个文件存在问题以及错误性质的信息。您需要从bucket中删除相应的文件,更正并重新上传

    bq--format=prettyjson show-j[bqts_u…]


    也可以查看传输的文本。

    他是另一种方法,使用基于事件的
    云函数
    将数据加载到BigQuery中。创建一个带有
    “触发器类型”
    作为云存储的云函数。一旦文件/文件加载到云存储桶中,就会调用/触发云函数事件,云存储的数据将加载到BigQuery中

    import pandas as pd
    from google.cloud import bigquery
    
    def bqDataLoad(event, context):
        bucketName = event['bucket']
        blobName = event['name']
        fileName = "gs://" + bucketName + "/" + blobName
        
        bigqueryClient = bigquery.Client()
        tableRef = bigqueryClient.dataset("bq-dataset-name").table("bq-table-name")
    
        dataFrame = pd.read_csv(fileName)
    
        bigqueryJob = bigqueryClient.load_table_from_dataframe(dataFrame, tableRef)
        bigqueryJob.result()
    

    他是另一种方法,使用基于事件的
    云函数
    将数据加载到BigQuery中。创建一个带有
    “触发器类型”
    作为云存储的云函数。一旦文件/文件加载到云存储桶中,就会调用/触发云函数事件,云存储的数据将加载到BigQuery中

    import pandas as pd
    from google.cloud import bigquery
    
    def bqDataLoad(event, context):
        bucketName = event['bucket']
        blobName = event['name']
        fileName = "gs://" + bucketName + "/" + blobName
        
        bigqueryClient = bigquery.Client()
        tableRef = bigqueryClient.dataset("bq-dataset-name").table("bq-table-name")
    
        dataFrame = pd.read_csv(fileName)
    
        bigqueryJob = bigqueryClient.load_table_from_dataframe(dataFrame, tableRef)
        bigqueryJob.result()
    

    谢谢您是否知道如何转换位于中的一组.txt文件