【问题标题】:What is the correct way to upload files to a SQL Server inside my web application?将文件上传到我的 Web 应用程序中的 SQL Server 的正确方法是什么?
【发布时间】:2020-08-23 00:05:33
【问题描述】:

我正在开发一个 Web 应用程序,用户可以在其中上传 Excel 文件。我知道我可以使用OPENROWSET 函数将数据从 excel 读取到 SQL Server,但我不会这样做,因为此函数需要文件路径。

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

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

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

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

【问题讨论】:

    标签: python sql-server excel pandas flask


    【解决方案1】:

    如果我正确理解了您的问题,您正在尝试将 xls(s) 文件的内容加载到 SQLServer 数据库中。这实际上并非易事,因为取决于 Excel 文件中的内容,您可能希望拥有一个表,或者更可能是基于数据的多个表。所以我会退后一点,问三个问题:

    1. 什么是我需要保存的数据以及这些数据在我的 SQL 表中的结构。在这一点上忘记 excel - 也许只需检查第一行数据,看看你需要如何保存它。
    2. 如何将文件放入我的 Web 应用程序?例如,当用户上传文件时,您可能希望使用POST 表单并将文件数据发送到您的服务器和您的服务器以保存该文件(例如,在 S3 上或 /tmp 文件夹中,或到内存中进行临时处理)。
    3. 既然您知道输入是什么(xls(x) 文件及其位置)以及需要如何保存数据(sql schema),现在是时候决定最适合这项工作的工具是什么了。 Pandas 可能不会成为一个好工具,除非您实际上只是想加载文件并按原样将其转储到单个表中(如果有的话)。在这一点上,我建议使用xlrd 之类的东西,如果只有xls 文件,或者openpyxl 用于xlsxlsx 文件。通过这种方式,您可以随心所欲地塑造您的数据。例如,如果用户输入格式错误的日期;空单元格(它们应该默认为某些东西吗?);类型不匹配等。

    换句话说,您所描述的任务根本不是微不足道的。一旦你决定了你的设计,这将需要相当多的计划和设计,然后是相当多的 Python 代码。如果您需要,请随时在此处提出更多具体问题(例如,如何在文件更新中捕获 POST 数据或任何您需要帮助的问题)。

    【讨论】:

    • 感谢您的回复 David542!我可以上传文件并加载到我的 sql 服务器中,并且我在服务器中设置了所有东西来处理文件。我的问题具体在第 2 步。现在,我正在将文件临时上传到一个目录(服务器本地)。然后 SQL 使用给定的文件路径将该文件读入表中,然后删除该文件。这是执行第 2 步的正确方法,因为它不是直接将文件提供给 SQL Server,而是提供路径?
    猜你喜欢
    • 2021-09-14
    • 2011-01-21
    • 1970-01-01
    • 2021-04-18
    • 2022-12-04
    • 2021-02-07
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多