当前位置: 首页 > 知识库问答 >
问题:

Postgres 9.4:使用转换步骤复制?

那宏大
2023-03-14

我有一些非常大的CSV文件,我正在使用Postgres9.4。我正在使用Postgres的COPY命令将它们高效地导入到我的数据库中。这很管用:

    cursor = conn.cursor()
    copy_str = "COPY mytable(presentation_code,quantity,"
    copy_str += "processing_date,price_per_unit) FROM STDIN "
    copy_str += "WITH DELIMITER AS ','"
    file_obj = open(filename)
    cursor.copy_expert(copy_str, file_obj)
    try:
        conn.commit()
    except Exception as err:
        print 'EXCEPTION:', err

问题是,在数据文件适合复制之前,我必须对它们运行一些转换步骤。这些包括重新排序字段、将字符串转换为浮动、转换日期以便它们适合于Postgres,以及计算一些值(尽管我可以跳过最后一步):

for row in reader:
    presentation_code = row[0].strip()
    quantity = int(row[1])
    period = row[9]
    processing_date = period[:4] + '-' + period[4:] + '-01'
    if row[4]:
        price_per_unit = actual_cost / float(row[4])
    else:
        price_per_unit = 0
    output = [presentation_code, quantity, processing_date, price_per_unit]
    writer.writerow(output)

是否有任何Postgres工具可以让我在一个命令中完成这两个步骤(转换,然后复制)?还是这只是必要的一步?

共有1个答案

尤博达
2023-03-14

您必须将转换编写为一个程序,将每一行从标准输入转换为标准输出,然后将其用作copy命令本身的筛选器。详见copy的手册页(查看“程序”部分):http://www.costgresql.org/docs/9.4/statig/sql-copy.html。请注意,该程序将以“postgres”用户的身份运行(如果您想从客户端应用程序运行它,可以使用psql的\copy命令,http://www.postgresql.org/docs/9.4/statig/app-psql.html)。

 类似资料:
  • 步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注:登录后可在“开发者中心”查看对应的接口权限。 步骤二:引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js 如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://r

  • 本文向大家介绍Python对象转换为json的方法步骤,包括了Python对象转换为json的方法步骤的使用技巧和注意事项,需要的朋友参考一下 Python中内置了json库,用起来超级方便,json现在以成为开发的必备。 python对象到json字符串的转换规则: Python JSON dict object list, tuple array str, unicode string int

  • 在使用Jenkins管道的过程中,我将一些使用FreeStyle类型项目的旧构建转换为使用管道。旧的自由式建筑效果很好。 我的构建通常在容器环境中完成(通过SSH为该构建而展开),并以用于QA的SonarQube分析结束。 sonarqube步骤(使用Jenkins sonarqube插件)自动将带有正确参数的sonarqube扫描器注入到容器中,以连接到sonarqube服务器,如本例中Jenk

  • 我想在每个步骤之前和之后执行一些操作(而不是场景)。用cucumber怎么做? 就像jUnit中的后和前。 **我正在使用java。

  • 我试图将类型转换为布尔值。所以我就这么做了: 但是不是布尔值,它只包含值。然而,当我尝试这个: 返回一个布尔值,该值为false。 我是否遗漏了一些关于“as”演员的内容? 哪一个是正确的转换为布尔值?

  • 问题内容: 这个问题已经在这里有了答案 : T-SQL转换与转换 (7个答案) 7年前关闭。 选择什么:或用于日期时间(Microsoft SQL Server)? 我看过MSDN规范。乍一看,似乎没有什么区别,除了语法: CAST的语法: CONVERT的语法: 而且 CAST 是ANSI标准,这使其在不同的数据库平台上都更具可移植性。 问题答案: 有一个可选参数,我建议用代替。它有助于避免混乱