Oracle из Excel - динамически создавать типы столбцов - PullRequest
0 голосов
/ 19 марта 2019

Мне нужно сделать вычисления для такой огромной таблицы XLS (~ 150 столбцов, ~ 1.000.000 строк). Excel зависает.Я решил перенести данные в таблицу Oracle.

Столбцы имеют все основные типы данных: int, числа с плавающей запятой, символы, строки, даты

У меня есть два варианта:

  1. Я создаю таблицу вручную с правильными типами данных.Это может быть практическим решением в краткосрочной перспективе, но все же утомительно.
  2. Для долгосрочного решения (ожидая много разных типов таблиц Excel в будущем) я хотел бы динамически определять типы столбцов изCSV.

Я сейчас создаю таблицу с использованием varchar tpye по умолчанию, используя Python:

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 до тех пор, пока у меня не появятся все типы, или для этого есть более простой алгоритм?

Я думаю, что в моих таблицах правильнее использовать правильные типы, чем long varchar, поэтому я могу выполнять более чистые запросы.

РЕДАКТИРОВАТЬ: я включу код в Python 3 после того, какЯ закончил с реализацией, мне просто интересны другие мнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...