Сохранение типов данных из фрейма данных в таблицу SQL Server - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть фрейм данных (первоначально из csv)

df = pd.read_excel (r'R:\__Test Server\DailyStatuses\DailyWork10.18.xlsx')

Я создал фрейм данных, чтобы иметь дело с некоторыми нулевыми значениями в строках. Я также создал таблицу в SQL Server и определил типы столбцов (datetime, int и varchar).

Я строю строку вставки для вставки данных в новыйтаблица в SQL Server.

insert_query='INSERT INTO [DailyStatuses].[dbo].[StatusReports] VALUES (
for i in range (df.shape[0]):
    for j in range(df.shape[1]):
        insert_query += (df[df.columns.values[j]][i]) +','
    insert_query= insert_query[:-1] + '),('
insert_query = insert_query[:-3] + ');'

Мой вывод:

INSERT INTO [DailyStatuses].[dbo].[StatusReports] VALUES (3916, 2019-10-17 16:45:54...

Я постоянно сталкиваюсь с ошибками в отношении типов данных, лучше ли все определять как str, чтобы легчевставить в SQL Server (и определить каждый столбец в таблице как str) и определить типы данных при извлечении позже в будущем?

1 Ответ

0 голосов
/ 04 ноября 2019

Вам лучше использовать параметры, но, основываясь на заданном вопросе, вам придется разбираться с каждым типом данных отдельно.

Для значений int вам будет хорошо с ними как есть. .

Для строковых значений вам нужно будет заключать в них одинарные кавычки, то есть 'значение', и вам также необходимо заменить любые встроенные одинарные кавычки двумя одинарными кавычками.

ДляЗначения даты и времени, вы должны использовать формат, который не зависит от региональных настроек, и заключать их в кавычки, т. е. '20191231 12: 54: 54'

Другой альтернативой (как вы предлагаете) является приведение их всех вкак строки, и выполнить очистку и изменения типа данных в SQL Server. Это часто более надежное направление. Опять же, не забывайте удваивать любые встроенные одинарные кавычки в пределах значений.

...