Google cloud platform 读取数据时出错,错误消息:CSV表引用列位置174,但从位置136868开始的行仅包含94列
我正在尝试将数据从Snowflake卸载到GCS,然后将GCS卸载到bq表。 下面是从雪花中卸载数据的代码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
```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”,它对我很有效