python - CSV -> JSON -> PostgreSQL“令牌无效”
问题描述
我有一个 CSV 文件,其中包含 1 列(“json_doc”),其中包含多行 JSON 数据。我想收集这个 json 数据并将其上传到 Postgres 数据库。行的格式为:
{"id": "0436d9b9305d", "base": {"ateco": [{"code": "46.11.03", "rootCode": "G", "description": "Agenti e rappresentanti di animali vivi"}], "founded": "1972-07-10", "legalName": "COBEM - S.R.L.", "legalForms": [{"name": "Società Di Capitale", "level": 1}, {"name": "Società A Responsabilità Limitata", "level": 2}]}, "name": "COBEM - S.R.L.", "people": {"items": [{"name": "45808b0b5b5affa871c8e91169bb10c6930fac56", "givenName": "64e4393f477394f11f6477ca76395ed469548865", "familyName": "68ee44f14dc54d664dffe63195d42a14988b69bb"}]}, "country": "it", "locations": {}}
有数百万行,并非所有格式都是一致的,即一些嵌套字典在结构上与其他字典不同。
我采用了其中的 5 行,并应用了以下 Python:
import pandas as pd
df = pd.read_csv('samplecol.csv')
df = df.to_json('data.json')
然后我使用https://jsonlint.com来检查 JSON,一切都很好。
我有一个 JSON 文件、data.json 和一个 PostgreSQL 数据库,并且想将 data.json 导入 Postgres。
我运行以下命令来创建一个表:
SN_ITA_test=# CREATE TABLE jsons(ID serial NOT NULL PRIMARY KEY, info jsonb NOT NULL);
当我尝试使用以下方式将文件上传到 Postgres 时:
SN_ITA_test=# \copy jsons (info) FROM 'data.json';
我得到错误:
ERROR: invalid input syntax for type json
DETAIL: Token "id" is invalid.
CONTEXT: JSON data, line 1: {"json_doc":{"0":"{"id...
COPY jsons, line 1, column info: "{"json_doc":{"0":"{"id": "0436d9b9305d", "base": {"ateco": [{"code": "46.11.03", "rootCode": "G", "d..."
解决方案
推荐阅读
- memory - 如何调整 TimesTen 内存数据库所需的内存大小?
- tensorflow - CTC 丢失错误:找不到有效路径?Tf.keras 中的 OCR 困难
- php - 获取数组中多维数组的值
- azure - 获取已解锁的资源 azure
- r - 打印双引号时避免 paste0 中的转义字符
- c++ - 如何安装/应用 C++ 补丁?
- java - 使用 sparql 查询向 Fuseki 插入数据
- android-studio - Flutter Layout Inspector - 缺少“iOS”按钮
- swift5 - 如何快速获取当前连接的 Wifi 网络的 SSID | iOS 14?
- java - TestNG如何在单元测试中测试异常