抓取混合元素并传递给 SQL

数据挖掘 sql 网页抓取 python-3.x
2022-02-14 16:14:36

我正在通过 python 运行 webscrapes,它从 web 上托管的 csv 中检索数据。我想将数据传递到 MSSQL 数据库中。我遇到的一个问题是 csv 中的混合元素/数据类型。这是数据的示例

Item    Val1    Val2
A       100      200
B       101      201
C       Null    -2/2(%)
D       Null    2019-Nov-18

我想将所有这些数据导入数据库,但关键数据在“Val2”列中。它包含数字(格式为数字和一般)、日期和带有数字的字符串,如上。

我会很感激你对两件事的看法:

  1. 在我将这些数据输入 python 之后,将其发送到 SQL 的最佳方式/包是什么
  2. 我是否需要以某种方式设置 SQL 表来处理混合元素?我应该用 python 过滤掉这些不同的值并将它们放在其他地方吗?

对于 1,我查看了诸如pd.to_sql遍历行并通过 pyodbc 发送之类的东西。一开始数据不会特别大。我将设置很多刮擦,所以只想要一些关于“最佳”方式进行转移的想法,这样我以后就不必重新设计它们了

谢谢我知道这是开放式的,但很想听听关于“正确”方法的任何想法

1个回答

一种方法是将该列声明为字符类型。我认为这将是一个糟糕的解决方案,因为它将数据的所有解释和处理都强制返回到应用程序中。最好将 Val2 声明为数据类型sql_variant至少 DBMS 有机会正确解释该值。

由于这些数据类型中的每一个都代表具有独特语义的不同属性,因此最好将它们分成各自的列。SQL Server 具有TRY_PARSE函数,它允许您发现每个值的数据类型并将其分配给相应的列。