首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据传输文件v2加载到大查询中

将数据传输文件v2加载到大查询中
EN

Stack Overflow用户
提问于 2016-10-25 12:55:14
回答 1查看 576关注 0票数 1

我目前正在尝试插入我们所有的DT文件v2到烧烤。我已经用点击文件做了,我发现了任何麻烦。

但这与活动和印象是不同的。

我编写了一个快速脚本来帮助我为插入创建模式:

代码语言:javascript
运行
复制
import csv,json
import glob
data = []

for i in glob.glob('*.csv'):
  print i
  b = i.split("_")
  print b[2]
  with open(i, 'rb') as f:
    reader = csv.reader(f)
    row1 = next(reader)
  title = [w.replace(' ', '_').replace('/', '_').replace(':', '_').replace('(', '_').replace(')', '').replace("-", "_") for w in row1]
  print title

  for a in title:
    j={"name":"{0}".format(a),"type":"string","mode":"nullable"}
    print j
    if j not in data:
      data.append(j)

  with open('schema_' + b[2] + '.json', 'w') as outfile:
    json.dump(data, outfile)

之后,我使用小bash脚本插入GCS中的所有数据。

代码语言:javascript
运行
复制
#!/bin/bash

prep_files() {
date=$(echo "$f" | cut -d'_' -f4 | cut -c1-8)
echo "$n"
table_name=$(echo "$f" | cut -d'_' -f1-3)
bq --nosync load --field_delimiter=',' DCM_V2."$table_name""_""$date" "$var" ./schema/v2/schema_"$n".json
}


num=1

for var in $(gsutil ls gs://import-log/01_v2/*.csv.gz)
    do
       if test $num -lt 10000
       then
          echo "$var"
          f=$(echo "$var" | cut -d'/' -f5)
          n=$(echo "$f" |  cut -d'_' -f3)
          echo "$n"
          prep_files
          num=$(($num+1))
       else
          echo -e "Wait the next day"
          echo "$num"
          sleep $(( $(date -d 'tomorrow 0100' +%s) - $(date +%s) ))
          num=0
        fi
    done


 echo 'Import done'

但我有这样的错误:

错误:遇到的错误太多了。(错误代码:无效) /gzip/subrange//bigstore/import-log/01_v2/dcm_accountXXX_impression_2016101220_20161013_073847_299112066.csv.gz: CSV表引用列位置101,但从位置:0开始的行仅包含101个列。(错误代码:无效)

所以我用:$awk -F',' '{print NF}'检查我的模式中的列数,但是我有很多列.所以我认为这是因为我们有逗号的价值(一些出版商正在使用.NET框架,允许在url中使用逗号)。但这些值用双引号括在一起。

所以我用一个小文件做了个测试:

代码语言:javascript
运行
复制
id,url
1,http://www.google.com
2,"http://www.google.com/test1,test2,test3"

这个装船工作..。

如果有人能帮我,那就太好了。:)

编辑:我做了另一个测试,用一个已经解压缩的文件加载。

遇到的错误太多了。(错误代码:无效)文件-00000000: CSV表引用列位置104,但从位置开始的行:2006877004只包含104个列。(错误代码:无效)

我使用以下命令查找行:$tail -c 2006877004 dcm_accountXXXX_activity_20161012_20161013_040343_299059260.csv | head -n 1

我得到:

3079,10435077,311776195,75045433,1,2626849,139520233,IT,,28,0.0,22,,4003208,,dc_pre=CLHihcPW1M8CFTEC0woddTEPSQ;~oref=http://imasdk.googleapis.com/js/core/bridge3.146.2_en.html,1979747802,1476255005253094,2,,4233079,CONVERSION,POSTVIEW,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

之后:$head -n1 dcm_account8897_activity_20161012_20161013_040343_299059260.csv | awk -F',' '{print NF}'

答复: 102

我第一排有104列,这一行有102列.

还有人对DT文件v2有问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 22:03:21

我将从google打开csv文件,并将这些列与您生成的模式进行比较。很可能您会在模式中找到一个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40240556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档