Я пытаюсь загрузить кучу ExcelSheets в таблицу Oracle. Excelsheets не соответствуют. Таким образом, таблицы в Oracle должны генерироваться динамически на основе столбца в Excelsheets. Это самое простое решение, которое я нашел в интернете, поэтому я продолжил этот подход. Я новичок в Python.
Взяв следующую структуру в качестве примера.
Я пытаюсь импортировать следующий файл Excel в таблицу MEM_TABLE . Поле DATE является непоследовательным, в качестве значений может быть указано NA, _ND или Date.
Код, который я использовал для загрузки Excel, ниже
xls_file = pd.ExcelFile("Excel File")
df = xls_file.parse('Sheet1',parse_dates=True)
df = df.replace(np.nan, '') #replace NaN with blank string
df = df.replace('NA', '') #replace "NA" with blank string
df = df.replace('_ND', '') #replace "NA" with blank string
df.to_sql('MEM_TABLE', conn_ora, if_exists='append', index = False )
Таблица, созданная методом to_sql , имеет следующую структуру
MEM_TABLE(
date CLOB NULL,
emp_nbr NUMBER(19,0) NULL
)
В dataframe это читает что-то вроде этого
DATE EMP_NBR
0 2
1 2018-01-04 00:00:00 1
2 2018-01-01 00:00:00 2
3 2018-01-03 00:00:00 1
4 1
5 1
Похоже, что Pandas выполняет автоматическое приведение к дате 1/4/2018 при создании DataFrame.
Ниже приведена ошибка, которая, как я полагаю, заключается в том, что столбец DATE в таблице MEM_TABLE имеет тип CLOB, а в dataFrame поле Date содержит объект DATE. Похоже, объект даты не может быть вставлен в ячейку CLOB.
TypeError: ожидается объект строки или байта
Если Даты указаны в строке (например, "1/4/2018"), я не получаю никаких ошибок.
Мой вопрос здесь
Есть ли в любом случае отключить автоматический анализ в поле даты, пока создается кадр данных?