【问题标题】:How to convert rows of string data type type to XML data type in SQL Server using python如何使用python在SQL Server中将字符串数据类型类型的行转换为XML数据类型
【发布时间】:2023-04-02 04:11:02
【问题描述】:

我在我的 SQL Server 表中存储了 Web 源代码 varchar。该表有 1000 个这些网络资源。手动打开每个 XML 源将其保存为 XML 数据并以 XML 数据类型存储在 SQL Server 表中是一个繁琐的过程。请帮助使用 SQL 或 Python 中的任何脚本,这些脚本可以遍历我的表中的列表并将每个链接保存为 SQL Server 表中的 XML 数据类型。我正在为多个 XML 粉碎准备这些文件。感谢您的帮助。

select * from [dbo].[FormIndex]

我已附上我的桌子的 sn-p。

最终目标是下表。以下是其中一个手动存储为 XML 时的样子。手动完成数千个非常困难,所以我决定使用 python 代码打开存储在 SQL Server 中的字符串,打开它,将 url 保存为 XML 数据类型并将其存储回表中。

请帮忙 - 谢谢

这是我用来将表作为 pandas 数据框拉取并遍历每个 varchar url 的 Python 代码,打开它并将其作为 XML 数据保存回 SQL Server 表。但我无法运行它

第一个工作正常并返回正确的结果,返回一个 XMLLink 表(我用来在 SQL Server 中存储 XML 字符串的列名):

 ##From SQL Server database to DataFrame Pandas
 import pandas as pd
 import pyodbc
 
 cnxn = pyodbc.connect

 cnxn = pyodbc.connect(
      r'Trusted_Connection=yes;'
      r'DRIVER={ODBC Driver 13 for SQL Server};'
      r'SERVER=*****;'
      r'DATABASE=IRS-900;'
      r'UID=*****;' 
      r'PWD=*****;'
     )  
 
 query = "SELECT XMLLink FROM [IRS-900].[dbo].[FormIndex]"
 df = pd.read_sql(query, cnxn)
 
print(df.head(7))

但是当我构建 for 循环以遍历数据框时,它会引发错误。这是代码

import os
import pyodbc
import datetime
import pyodbc
import urllib
import pandas as pd

##From SQL Server database to DataFrame Pandas

cnxn = pyodbc.connect

cnxn = pyodbc.connect(
          r'Trusted_Connection=yes;'
          r'DRIVER={ODBC Driver 13 for SQL Server};'
          r'SERVER=*****;'
          r'DATABASE=IRS-900;'
          r'UID=*****;' 
          r'PWD=*****;'
         ) 
 
query = "SELECT XMLLink FROM [IRS-900].[dbo].[FormIndex]"
df = pd.read_sql(query, cnxn)

##print(df.head(7))

for xmlpath in df:
    xmlurl=urllib.request.urlopen(xmlpath)
    xml_as_string = xmlurl.read() 
    cursor = cnxn.cursor()
    cursor.execute("insert into Test_Table values ('Text', 1, '"+ xml_as_string +"')") 
cnxn.commit()
dData = cursor.fetchall()

【问题讨论】:

    标签:
    python
    sql-server
    xml
    pandas-datareader
    urlopen