【问题标题】:How can I import data from excel to postgres- many to many relationship如何将数据从excel导入postgres-多对多关系
【发布时间】:2020-01-19 13:02:13
【问题描述】:

我正在创建一个 Web 应用程序,但在将数据导入到 postgress 数据库中的表时遇到了问题。 我有 id_b 和 id_cat(books id and categories id) 的 excel 书籍有几个类别,类别可以分配给许多书籍,excel 看起来像这样: excel data

它有 30 000 条记录。

我有一个问题如何将它导入数据库(Postgres)。此数据的表有两列: id_b 和 id_cat。我想以这种方式将此数据导出到 csv,必须为每本书分配一个类别标识符(例如,标识符为 1 的书应该出现 9 次,因为它分配了 9 个类别,依此类推) - 但我不能轻松做到。它应该看起来像这样: correct data 有谁知道以这种形式获取数据的任何方法?

【问题讨论】:

  • 您的问题不清楚。是关于连接 Excel 和 Postgres 的吗?是关于特定的数据转换吗?它的措辞似乎相当宽泛。
  • 嗨,我认为我在转换数据时遇到了问题,所以问题是将数据转换为可以将它们导入 postgres 的格式。我可以添加一些东西来获取一些允许我以正确格式获取数据的提示?

标签: sql excel postgresql csv


【解决方案1】:

您的 excel 表格格式有大量的列,这也取决于类别的数量,而 SQL 并不能很好地适应这一点。

最简单的选择是:

将您的 Excel 数据导出为 CSV。

使用 python 脚本使用csv module 读取它并输出 COPY 友好的制表符分隔格式。

将此加载到数据库中(或直接从 python 脚本中插入)。

类似的...

import csv

with open('bookcat.csv') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        if row:
            id = row[0].strip()
            categories = row[1:]
            for cat in categories:
                cat = cat.strip()
                if cat:
                    print("%s\t%s" % (id, cat))

csv 输出版本:

import csv

with open('bookcat.csv') as csvfile, open("out.csv","w") as outfile:
    reader = csv.reader(csvfile)
    writer = csv.writer(outfile)
    for row in reader:
        if row:
            id = row[0].strip()
            categories = row[1:]
            for cat in categories:
                cat = cat.strip()
                if cat:
                    writer.writerow((id, cat))

如果您需要特定的 csv 格式,请查看 csv 模块的文档。

【讨论】:

  • 如何将这些转换后的数据放入 csv 文件中?
  • 非常感谢!
猜你喜欢
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2021-10-28
  • 2013-07-28
  • 2020-03-23
  • 2013-07-03
  • 2022-10-17
相关资源
最近更新 更多