【问题标题】:Generate SQL Statements from CSV in Python (Dictionaries, JSON, List)在 Python 中从 CSV 生成 SQL 语句(字典、JSON、列表)
【发布时间】:2021-12-03 20:02:55
【问题描述】:

想法是在 CSV 文件中读取如下表:

DATABASE,SCHEMA,TABLE,COLUMN,TYPE,LENGTH
D1,S1,T1,C1,NUMBER,5
D1,S1,T1,C2,VARCHAR,25
D1,S1,T2,C1,NUMBER,5
D1,S1,T2,C2,VARCHAR,25
D1,S2,T1,C1,NUMBER,5
D1,S2,T1,C2,VARCHAR,25
D1,S2,T2,C1,NUMBER,5
D1,S2,T2,C2,VARCHAR,25

并在python中在字符串变量中创建对应的查询,例如:

create table <s1>.<t1> (c1 number(5), c2 varchar(25));
create table <s1>.<t2> (c1 number(5), c2 varchar(25));
create table <s2>.<t1> (c1 number(5), c2 varchar(25));
create table <s2>.<t2> (c1 number(5), c2 varchar(25));

我的想法是将表存储在 json 数组中,或者我可以使用 pandas,但我不知道根据要使用的迭代执行它的最简单方法是什么

【问题讨论】:

  • 您介意将一个可以复制到文本编辑器中的 csv 版本吗?
  • 我添加了表格以便您复制

标签: python json pandas list dictionary


【解决方案1】:

假设您的 DataFrame 是 df,请使用:

groups = df.groupby(["SCHEMA", "TABLE"]).agg({"COLUMN": list, "TYPE": list, "LENGTH": list})
for (schema, table), row in groups.iterrows():
    record = zip(row["COLUMN"], row["TYPE"], row["LENGTH"])
    columns = ", ".join(f"{column} {type_}({length})" for column, type_, length in record)
    sentence = f"create table <{schema}>.<{table}> {columns};"
    print(sentence)

输出

create table <S1>.<T1> C1 NUMBER(5), C2 VARCHAR(25);
create table <S1>.<T2> C1 NUMBER(5), C2 VARCHAR(25);
create table <S2>.<T1> C1 NUMBER(5), C2 VARCHAR(25);
create table <S2>.<T2> C1 NUMBER(5), C2 VARCHAR(25);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2010-09-05
    • 2020-01-28
    • 2021-01-23
    • 2019-05-09
    相关资源
    最近更新 更多