【问题标题】:Insert JSON data into Oracle using Python使用 Python 将 JSON 数据插入 Oracle
【发布时间】:2020-09-11 09:48:58
【问题描述】:

大家。我在处理 json 文件时遇到问题。我有这样一个 Json 数据列表,如何将这些数据插入到表中? Python代码:

with open('object.json') as f:
    json_obj = json.load(f)
print(json_obj)

for i in enumerate(json_obj):
    id = validate_string(item.get("id", None))
    LAST_NAME = validate_string(item.get("LAST_NAME", None))
    FIRST_NAME = validate_string(item.get("FIRST_NAME", None))
cursor.execute("insert into EMPLOYEES (id,LAST_NAME,FIRST_NAME) VALUES (:1,:2,:3)", (id,LAST_NAME,FIRST_NAME))
conn.close

JSON (object.json) 文件中的一些日期:

[{"ID": 1, "LAST_NAME": "Alex", "FIRST_NAME": "Pip"}, 
{"ID": 2, "LAST_NAME": "John", "FIRST_NAME": "Alan"},
{"ID": 3, "LAST_NAME": "Dehan", "FIRST_NAME": "Luck"},
{"ID": 4, "LAST_NAME": "Nick", "FIRST_NAME": "Adem"},
{"ID": 5, "LAST_NAME": "Aspen", "FIRST_NAME": "Turit"}]

DatabaseError: ORA-00904: "ID": 无效标识符

【问题讨论】:

  • 一旦您解决了错误(请参阅已经提出的答案),那么您应该考虑使用executemany() 来提高性能。请参阅cx_Oracle documentation

标签: python sql oracle


【解决方案1】:

ORA-904 是“无效的标识符”。

  • 您确定列 id 存在吗?
  • 您是否使用区分大小写的列名创建了员工表,我看到在您的插入语句中,您的“id”为小写,“LAST_NAME”为大写。如果您的列名区分大小写,则必须用双引号将它们括起来。示例:
create table test ("id" NUMBER, "Name" VARCHAR2(100));
INSERT INTO test (id, name) VALUES (1,'KOEN'); 
> gives ORA-00904: "NAME": invalid identifier 
INSERT INTO test ("id", "Name") VALUES (1,'KOEN');
1 row(s) inserted.

更多详情here

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    相关资源
    最近更新 更多