使用 GAE 批量上传器脚本,如何处理 CSV 中的空值?

发布于 2024-09-26 16:03:46 字数 266 浏览 2 评论 0原文

我已按照本文档中的建议设置了 app.yaml 和 data_uploader 文件。我的 CSV 文件有一些空值(我导出的电子表格有一些空单元格)。

当我运行脚本时,我在日志文件中收到以下错误: [ERROR ] WorkerThread-0 中出现错误:值不应为空;收到[]

我的猜测是,这是因为 csv 文件中的某些值是空的,我如何确保空值要么作为 '' 导入到数据存储中,要么根本不导入(模型属性都是可选的)。

谢谢,大卫。

I've set up my app.yaml and data_uploader files as suggested in this document. My CSV file has some null values (the spreadsheet that I exported had some empty cells).

When I run the script, I get this error in the log file:
[ERROR ] Error in WorkerThread-0: Value should not be empty; received [].

My guess is that it is because some values are empty in the csv file, How can I make sure that the empty values are either imported as '' into the datastore, or not imported at all (the model properties are all optional).

Thanks, David.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笛声青案梦长安 2024-10-03 16:03:46

您可能应该自定义 bulkloader.yaml 在属性映射部分中给出正确的指令。

检查模型种类属性上出现问题的 import_transform 元素是否已设置,并尝试使用 none_if_empty 指令。

- property: fooproperty
  external_name: fooproperty
  import_transform: transform.none_if_empty(foopropertytype)

这就是none_if_empty 的作用:

def none_if_empty(fn):
  """A wrapper for a value to return None if it's empty. Useful on import.

  Can be used in config files (e.g. "transform.none_if_empty(int)" or
  as a decorator.

  Args:
    fn: Single argument transform function.

  Returns:
    Wrapped function.
  """

  def wrapper(value):
    if value == '' or value is None:
      return None
    return fn(value)

  return wrapper

据我所知,bulkloader 生成bulkloader.yaml 文件,使用生产数据存储统计信息推断正确的配置;只需检查所做的假设是否正确。

You probably should customize your bulkloader.yaml giving the right directive in the property map section.

Check if the import_transform element on your model kind property that gives problem is set, and try to use the none_if_empty directive .

- property: fooproperty
  external_name: fooproperty
  import_transform: transform.none_if_empty(foopropertytype)

This is what none_if_empty does:

def none_if_empty(fn):
  """A wrapper for a value to return None if it's empty. Useful on import.

  Can be used in config files (e.g. "transform.none_if_empty(int)" or
  as a decorator.

  Args:
    fn: Single argument transform function.

  Returns:
    Wrapped function.
  """

  def wrapper(value):
    if value == '' or value is None:
      return None
    return fn(value)

  return wrapper

Afaik, bulkloader generates the bulkloader.yaml file inferring the proper configuration using the production datastore stats; just check if the assumptions made are correct.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文