Oracle from Excel-动态创建列类型

时间:2019-03-19 13:38:37

标签: python excel oracle csv

我需要在如此巨大的XLS表(〜150列,〜1.000.000行)上进行计算,Excel会自行冻结。我决定将数据迁移到Oracle表中。

这些列具有所有基本数据类型:int,float,char,字符串,日期

我有两个选择:

  1. 我使用适当的数据类型手动创建表。在短期内,这可能是可行的解决方案,但同样乏味。
  2. 对于长期解决方案(将来会期望许多不同类型的excel表),我想从CSV动态定义列类型。

我现在使用Python使用默认的varchar tpye创建表:

list_of_columns = parseFirstLine_CSV(.\data.csv)
columns = ['"%s" varchar2(255)' % n for n in list_of_columns]
sql = "create table SomeTableName (%s)" % ",".join(columns)
cursor.execute(sql)

让我们看一下这张桌子。让我们假设并非每一行都是完整的。 xls中自然会提供“关键”数据,这只是一个示例。

ID      Company    Date         Quality
144     Apple      2019.01.03   ""
""      IBM        2019.01.03   200
105591  Oracle     2019.01.03   9
10R91   Microsoft  ""           113
10M99   ""         2019.01.03   3
1076a   Walmart    ""           ""
10M95   Lorem Co.  2019.01.03   3

我将使用Python,但这不是重点。

我的理论问题是:如果我不确定每列的CSV中的行是否完整,那么如何确定类型(所以我不能只看第二条csv行)以获取类型列表)。我应该遍历CSV行,直到获得所有类型,或者是否有更简单的算法?

我认为在表中使用适当的类型比长varchar更干净,因此我可以在其中进行更清晰的查询。

编辑:在完成实现后,我将在Python 3中包含代码,同时我只是对其他观点感兴趣。

0 个答案:

没有答案