python - 在 Python 中从 CSV 生成 SQL 语句(字典、JSON、列表)
问题描述
这个想法是在 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,但我不知道根据要使用的迭代执行它的最简单方法是什么
解决方案
假设您的 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);
推荐阅读
- dataset - 数据量在数据分析中是否重要?
- html - 需要的css动画循环
- 元素
- html - 防止窗口从某个点垂直向下调整大小
- jenkins-pipeline - Jenkinsfile:向“人员”中列出的所有用户发送邮件
- amazon-web-services - 备份 API 密钥以进行恢复
- apache-kafka - KSQL TABLE 或 STREAM 中的字符串字段,包含原始 JSON 消息的一部分
- php - 使用 CURL 发送媒体文件 - Laravel PHP
- javascript - HTML JS PHP 文件块上传
- javascript - React Redux 无法读取 mapStateToProps 中的嵌套值
- email - 如果在抄送中多次提及,一个人应该收到多少封电子邮件