在我的web应用程序中,将文件上载到SQL Server的正确方法是什么?

2024-10-01 07:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个web应用程序,用户可以在其中上载excel文件。我知道我可以使用OPENROWSET函数将excel中的数据读取到SQL Server中,但我不这么做,因为该函数需要文件路径

这似乎有点间接,因为我正在将一个文件上载到一个目录,然后告诉SQL Server在该目录中查找该文件,而不是仅仅将该文件提供给SQL Server

另一种选择是将Excel文件读入pandas数据框,然后使用to_sql函数,但是pandasread_excel函数非常慢,我相信另一种方法会更快

在处理从web应用程序上载的文件时,这两种方法中哪一种是“正确的”

如果第一种方法不被反对或“不正确”,那么我几乎可以肯定它会更快,并且会使用它。我只是想要一个有经验的开发者的想法或意见。webapp的后端是Python和flask


Tags: 文件数据方法函数用户路径目录web
1条回答
网友
1楼 · 发布于 2024-10-01 07:29:10

如果我正确理解了您的问题,那么您正在尝试将xls(s)文件的内容加载到SQLServer数据库中。这实际上不是一件小事,因为根据Excel文件中的内容,您可能希望有一个表,或者更可能是基于数据的多个表。所以我想退一步问三个问题:

  1. 我需要保存哪些数据,以及这些数据在我的SQL表中应该如何结构化。在这一点上忘掉excel吧,也许只需检查第一行数据,看看需要如何保存它
  2. 如何将文件放入我的web应用程序中?例如,当用户上载文件时,您可能希望使用POST表单并将文件数据发送到服务器和服务器以保存该文件(例如,在S3上,或在/tmp文件夹中,或在内存中进行临时处理)
  3. 现在,您已经知道了您的输入是什么(文件xls(x)及其位置)以及需要如何保存数据(文件sql schema),现在是时候决定该作业的最佳工具了。Pandas可能不会是一个好工具,除非您确实只想加载文件并将其转储,只需对单个表进行最小(如果有)更改。在这一点上,我建议使用类似于xlrd的东西,如果只有xls文件,或者openpyxl用于xlsxlsx文件。通过这种方式,您可以按照自己的意愿塑造数据。例如,如果用户输入的日期格式不正确;空单元格(是否默认为某个内容?);不匹配的类型等

换句话说,您描述的任务一点也不琐碎。这将需要相当多的规划和设计,一旦确定了设计,还需要相当多的python代码。如果需要的话,可以在这里问更多的问题,以获得更具体的问题(例如,如何在文件更新中捕获POST数据或任何需要帮助的内容)

相关问题 更多 >