我有一个包含 XML 数据的 S3 文件,我需要将其插入 Aurora PostgreSQL 数据库 (PostgreSQL 11.9) 中的表中。为此,我正在尝试使用 AWS lambda。在 lambda 函数中,我从 S3 对象读取数据并使用 pg8000 尝试将记录插入表中。插入 sql 失败
[ERROR] ProgrammingError: {'S': 'ERROR', 'V': 'ERROR', 'C': '42P18', 'M': 'could not determine data type of parameter $1', 'F': 'postgres.c', 'L': '1432', 'R': 'exec_parse_message'}
例子 -
S3 文件中的 XML
<?xml version="1.0" encoding="UTF-8"?>
<hotels>
<hotel id="Taj">
<name>Taj Campton Place</name>
<location>San Francisco</location>
<rating>4.5</rating>
<rooms>
<room id="100">
<capacity>3</capacity>
<comment>Phenomenal service</comment>
</room>
</rooms>
<personnel>
<person id="3030">
<name>Pie Co</name>
<salary currency="USD">80000</salary>
</person>
</personnel>
</hotel>
</hotels>
从 lambda 中的 S3 文件读取数据的代码
content_object = s3.Object(bucket, key)
file_content = content_object.get()["Body"].read().decode("utf-8")
#parsed_xml = ET.fromstring(file_content)
print(file_content)
插入数据的代码
conn = pg8000.connect(
database='lab',
user='master',
password='xxxxx',
host='lab.cluster.us-east-1.rds.amazonaws.com',
port=8192,
)
cursor = conn.cursor()
cursor.execute(
"INSERT INTO lambda_xml_test (data) values ('%s')", (file_content,)
)
我也试过
INSERT INTO lambda_xml_test (data) values ('%%')", (file_content,)
INSERT INTO lambda_xml_test (data) values (%s)", (file_content,)
关于如何将 XML 数据插入 PG 中的表的任何建议?