下面的代码读取一个JSON文件并将其存储到DB表中。
但是使用"."
生成的列名很少。
只有这些特定的列名必须替换为下划线"_"
。在推送到表之前,如果在任何列名中遇到"."
。在我的python代码中,不应该更改数据,而应该只更改带有"."
到"_"
的列名
下面是我尝试过的,但不确定如何替换列名,然后推送到DB:
import pandas as pd
import json
import sys
import psycopg2
data = sys.argv[1]
user= sys.argv[2]
password = sys.argv[3]
host = sys.argv[4]
port = sys.argv[5]
db = sys.argv[6]
documenttype = sys.argv[7]
schema_name = sys.argv[8]
from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://'+user+':'+password+'@'+host+':'+port+'/'+db)
print("Database is connected")
df = pd.read_json(data)
df['RecordsNew'] = df['Records'].astype('|S80')
df_1 = pd.json_normalize(df['Records'])
df_1.columns = map(str.lower, df_1.columns)
table_name =documenttype.lower()
df_1.to_sql(table_name,schema=schema_name,con=engine, if_exists = 'append',index=False)
JSON代码示例:
{
"Records": [
{
"CommodityId": "3470",
"SourceSystem": "SSP-generic-CHILD4",
"CommodityName": "ANCHOR BOLTS - BILL OF MATERIALS",
"CommodityType": ""
},
{
"CommodityId": "468657",
"SourceSystem": "SSP-generic-CHILD4",
"CommodityName": "COOLING INSERT",
"CommodityType": ""
},
{
"CommodityId": "836519",
"SourceSystem": "SSP-generic-CHILD4",
"CommodityName": "DIAPHRAGM 2ND STAGE PGT25",
"CommodityType": ""
},
{
"CommodityId": "807525",
"SourceSystem": "SSP-generic-CHILD4",
"CommodityName": "MOBILE NOZZLE MACHINING 2ST MS5002C(S2N)",
"CommodityType": ""
"ReconciledBy":{"SourceSystem":"SSP-sap-CHILD1","UserId":"","PasswordAdapter":""}
},
...
],
"PageToken": "TlhXQ0FVcTlzNE8rQQ"
}
使用“”生成的列名示例
"reconciledby.passwordadapter"
"procurementunit.sourcesystem"
"procurementunit.uniquename"
"sourcesystem.sourcesystemid"
目前没有回答
相关问题 更多 >
编程相关推荐