XML文件导入Snowflake遇DataFrame数据缺失问题及解决
完整读取XML文件并生成可导入Snowflake的DataFrame
问题背景
需要将每个XML文件的原始格式完整导入Snowflake,但原代码在转换为DataFrame时,仅能获取少量内容,无法读取XML中的全部5000行数据。
原代码问题分析
原代码使用np.genfromtxt读取XML文件并生成numpy数组,该函数针对CSV这类结构化文本设计,会按指定分隔符拆分内容,直接破坏了XML的完整结构,导致内容被错误拆分、截断。
原代码示例:
dated = datetime.today().strftime('%Y-%m-%d') source_dir = r'C:\Users\jSmith\.spyder-py3\SampleXML' table_name = 'LV_XML' file_list = glob.glob(source_dir + '/*.XML') data = [] for file_path in file_list: data.append( np.genfromtxt(file_path,dtype='str',delimiter='|',encoding='utf-8')) #delimiter used to make sure it is not splitting based on spaces, might be the issue? df = pd.DataFrame(list(zip(data)), columns =['SRC_XML']) df['SRC_XML']=df['SRC_XML'].astype(str) df = df.replace(',','', regex=True) df["TPR_AS_OF_DT"] = dated
解决方案
修改文件读取逻辑,直接将整个XML文件内容拼接为单个字符串,保留原始结构,生成的DataFrame可直接导入Snowflake供后续查询使用。
解决方案代码:
for file_path in file_list: with open(file_path,'r') as afile: content = '' for aline in afile: content += aline.replace('\n',' ') # 替换换行符以保持内容连续 data.append(content)
内容的提问来源于stack exchange,提问作者Markpelly
相关产品推荐
相关产品推荐

