Google cloud platform 读取数据时出错,错误消息:CSV表引用列位置174,但从位置136868开始的行仅包含94列

Google cloud platform 读取数据时出错,错误消息:CSV表引用列位置174,但从位置136868开始的行仅包含94列,google-cloud-platform,snowflake-cloud-data-platform,snowflake-schema,bq,ng-csv-import,Google Cloud Platform,Snowflake Cloud Data Platform,Snowflake Schema,Bq,Ng Csv Import,我正在尝试将数据从Snowflake卸载到GCS,然后将GCS卸载到bq表。 下面是从雪花中卸载数据的代码 ```copy into @unload_stage/FF_TBL_UNLOAD20200906.csv.gz from ( select * from SF_DB.SF_TBLS.FF_TBL_UNLOAD ) file_format = ( type=csv compression='gzip' FIELD_DELIMITER = '|' field_optiona

我正在尝试将数据从Snowflake卸载到GCS,然后将GCS卸载到bq表。 下面是从雪花中卸载数据的代码

```copy into @unload_stage/FF_TBL_UNLOAD20200906.csv.gz from 
(
select * 
from SF_DB.SF_TBLS.FF_TBL_UNLOAD
)
file_format = (
  type=csv compression='gzip' 
  FIELD_DELIMITER = '|' 
  field_optionally_enclosed_by='"' 
  NULL_IF=()
  EMPTY_FIELD_AS_NULL = TRUE 
)
single = false
max_file_size=5300000000 
header = false;```
然后我使用下面的脚本将数据从GCS复制到bq

```#!/bin/bash
date=20200906

echo "Removing FF_TBL_UNLOAD list with same date list...."

rm /home/varma/FF_TBL_UNLOADlist"$date".txt

echo "Listing FIlenames for FF_TBL_UNLOAD in GCS BUCKET...."

gsutil ls gs://syw_hs_inbound_outbound_data/FF_TBL_UNLOAD"$date"*.gz>>/home/varma/FF_TBL_UNLOADlist"$date".txt

echo "Starting Uploading  Data into table from FF_TBL_UNLOAD$date list..."
if [ -s /home/varma/FF_TBL_UNLOADlist"$date".txt ]
then
        while IFS= read -r line
        do
                echo "Uploading data for file $line"
        bq load --noreplace --field_delimiter="|" hty-ttw-analysis:out.FF_TBL_UNLOAD $line
        done < "/home/varma/FF_TBL_UNLOADlist${date}.txt"

else
        echo "File is Empty"

fi```
/bin/bash
日期=20200906
回显“删除具有相同日期列表的FF_TBL_卸载列表…”
rm/home/varma/FF_TBL_UNLOADlist“$date”.txt
echo“列出GCS存储桶中FF_TBL_卸载的文件名…”
gsutil ls gs://syw\u hs\u inbound\u outbound\u data/FF\u TBL\u UNLOAD“$date”*.gz>>/home/varma/FF\u TBL\u UNLOADlist“$date”.txt
echo“开始从FF_TBL_UNLOAD$日期列表将数据上载到表中…”
如果[-s/home/varma/FF_TBL_UNLOADlist“$date”.txt]
然后
而IFS=读取-r行
做
echo“上传文件$line的数据”
bq load--noreplace--field_delimiter=“|”hty ttw analysis:out.FF_TBL_UNLOAD$行
完成<“/home/varma/FF_TBL_UNLOADlist${date}.txt”
其他的
echo“文件为空”
fi```
它适用于除此表以外的所有表,我得到的错误是 读取数据时出错,错误消息:CSV表引用列位置174,但从位置136868开始的行仅包含94列


有人能帮我解决这个错误吗?我是应该更改文件格式还是应该根据错误消息对正在上载到bq的脚本进行一些更改?我想说问题出在命令行上:

bq load --noreplace --field_delimiter="|" hty-ttw-analysis:out.FF_TBL_UNLOAD $line
根据和其他问题,当加载的数据出现问题时,会显示此错误消息,即BigQuery无法正确解析或映射到要填充的表。因此,解决方案似乎是在运行此命令之前为CSV数据添加验证/清理步骤,这样就不会中断BigQuery负载


为了更好地了解数据可能存在的问题,正如社区的其他成员所指出的那样,可以重现错误消息的样本数据将非常有帮助。

请检查Bigquery中IF字段的处理方式是否为NULL?如果您共享示例数据hi,那就太好了——两个过程中哪一个失败了:从Snowflake卸载还是加载到BQ?假设它是加载到BQ中的,并且有多个文件,那么它是在第一个/每个文件上出错,还是只在一个特定的文件上出错?您能在Excel或Notepad++等应用程序中打开该文件并查看问题所在吗?谢谢您的回复。对于这个命令“bq load--noreplace--field_delimiter=“|”--null_marker=null--allow_quoted_newlines=TRUE--allow_jagged_rows=TRUE”,它对我很有效