Я бы хотел проанализировать фрейм данных для двух предварительно определенных столбцов в таблице sql. Схема в sql выглядит следующим образом:
abc(varchar(255))
def(varchar(255))
С таким фреймом данных:
df = pd.DataFrame(
[
[False, False],
[True, True],
],
columns=["ABC", "DEF"],
)
И запрос sql выглядит так:
with conn.cursor() as cursor:
string = "INSERT INTO {0}.{1}(abc, def) VALUES (?,?)".format(db, table)
cursor.execute(string, (df["ABC"]), (df["DEF"]))
cursor.commit()
Чтобы запрос (строка) выглядел следующим образом:
'INSERT INTO my_table(abc, def) VALUES (?,?)'
Это создает следующее сообщение об ошибке:
pyodbc.Error: ('HY004', '[HY004] [Cloudera][ODBC] (11320) SQL type not supported. (11320) (SQLBindParameter)')
Поэтому я пытаюсь использовать прямой запрос (не через Python ) в редакторе Impala:
'INSERT INTO my_table(abc, def) VALUES ('Hey','Hi');'
И выдает это сообщение об ошибке:
AnalysisException: Possible loss of precision for target table 'my_table'. Expression ''hey'' (type: `STRING) would need to be cast to VARCHAR(255) for column 'abc'`
Почему я даже не могу вставить в свою таблицу простые строки, такие как «Привет» ? Правильно ли настроена моя схема или что-то еще?