Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery 有没有一种方法可以使用自定义字段分隔符来使用Talend将带分隔符的文件加载到BigQuery中?_Google Bigquery_Talend - Fatal编程技术网

Google bigquery 有没有一种方法可以使用自定义字段分隔符来使用Talend将带分隔符的文件加载到BigQuery中?

Google bigquery 有没有一种方法可以使用自定义字段分隔符来使用Talend将带分隔符的文件加载到BigQuery中?,google-bigquery,talend,Google Bigquery,Talend,我想用这个分隔符|@#|代替逗号 样本记录 AA |#|--|#|不可用|#| 0|#@| 我希望BQ中的记录是这样的 AA--不可用0 有什么办法吗?通常在这种情况下,您会遵循以下步骤 将数据作为一列加载到BigQuery表中 使用Split(col,,|#@|’)[OFFSET(N)]模式将一列拆分为所需数量 可能会有不同的书写方式,例如 #standardSQL SELECT e[SAFE_OFFSET(0)] col1, e[SAFE_OFFSET(1)] col2, e

我想用这个分隔符
|@#|
代替逗号

样本记录

AA |#|--|#|不可用|#| 0|#@|

我希望BQ中的记录是这样的

AA--不可用0


有什么办法吗?

通常在这种情况下,您会遵循以下步骤

  • 将数据作为一列加载到BigQuery表中
  • 使用Split(col,,|#@|’)[OFFSET(N)]模式将一列拆分为所需数量
  • 可能会有不同的书写方式,例如

    #standardSQL
    SELECT
      e[SAFE_OFFSET(0)] col1, 
      e[SAFE_OFFSET(1)] col2, 
      e[SAFE_OFFSET(2)] col3, 
      e[SAFE_OFFSET(3)] col4
    FROM `project.dataset.table`, 
    UNNEST([STRUCT(SPLIT(col, '|#@|') AS e)])    
    
    您可以使用问题中的样本数据测试、播放上述内容,如下例所示

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'AA|#@|--|#@|Not Available|#@|0|#@|' AS col
    )
    SELECT 
      e[SAFE_OFFSET(0)] col1, 
      e[SAFE_OFFSET(1)] col2, 
      e[SAFE_OFFSET(2)] col3, 
      e[SAFE_OFFSET(3)] col4
    FROM `project.dataset.table`, 
    UNNEST([STRUCT(SPLIT(col, '|#@|') AS e)])     
    
    结果

    Row col1    col2    col3            col4     
    1   AA      --      Not Available   0       
    

    希望您能根据您的用例调整以上内容

    通常在这种情况下,您会执行以下操作

  • 将数据作为一列加载到BigQuery表中
  • 使用Split(col,,|#@|’)[OFFSET(N)]模式将一列拆分为所需数量
  • 可能会有不同的书写方式,例如

    #standardSQL
    SELECT
      e[SAFE_OFFSET(0)] col1, 
      e[SAFE_OFFSET(1)] col2, 
      e[SAFE_OFFSET(2)] col3, 
      e[SAFE_OFFSET(3)] col4
    FROM `project.dataset.table`, 
    UNNEST([STRUCT(SPLIT(col, '|#@|') AS e)])    
    
    您可以使用问题中的样本数据测试、播放上述内容,如下例所示

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'AA|#@|--|#@|Not Available|#@|0|#@|' AS col
    )
    SELECT 
      e[SAFE_OFFSET(0)] col1, 
      e[SAFE_OFFSET(1)] col2, 
      e[SAFE_OFFSET(2)] col3, 
      e[SAFE_OFFSET(3)] col4
    FROM `project.dataset.table`, 
    UNNEST([STRUCT(SPLIT(col, '|#@|') AS e)])     
    
    结果

    Row col1    col2    col3            col4     
    1   AA      --      Not Available   0       
    

    希望您能根据您的用例调整以上内容

    检查此答案并让我们知道答案回答您的问题谢谢检查。答案不适用于Talend。遗憾的是,我对Talend没有任何到期效力,但是对于每个Talend,您应该能够在Advance部分使用字段分隔符。这能解决您的问题吗?尝试但得到错误------>java.lang.RuntimeException:作业失败:BigQueryError{reason=invalid,location=gs://XXXXX.dat,message=error读取数据时,错误消息:CSV表遇到太多错误,放弃。行:1;错误:1。有关详细信息,请查看错误[]集合。}atI建议您提供所有这些详细信息,您可能需要Talend团队解决此问题检查此答案并让我们知道答案回答您的问题谢谢检查。答案不适用于Talend。遗憾的是,我对Talend没有任何到期效力,但是对于每个Talend,您应该能够在Advance部分使用字段分隔符。这能解决您的问题吗?尝试但得到错误------>java.lang.RuntimeException:作业失败:BigQueryError{reason=invalid,location=gs://XXXXX.dat,message=error读取数据时,错误消息:CSV表遇到太多错误,放弃。行:1;错误:1。有关详细信息,请查看错误[]集合。}atI建议您提供所有这些详细信息,也许您需要Talend团队来解决此问题。谢谢。寻找通过Talend而不是BQ(成本和性能。负载以TB为单位)实现的答案。既然BQ允许使用多字符分隔符,为什么Talend不接受它呢。我可以使它与“,”(逗号分隔符)谢谢。寻找通过Talend而不是BQ(成本和性能。负载以TB为单位)实现的答案。既然BQ允许使用多字符分隔符,为什么Talend不接受它呢。我可以使用“,”(逗号分隔符)