записать данные Unicode в MSSQL с Python? - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь записать таблицу из CSV-файла с текстом на иврите в базу данных сервера SQL.
таблица действительна, и pandas правильно читает данные (даже правильно отображает иврит в pycharm),
но когда я пытаюсь записать это в таблицу в базе данных, я получаю знаки вопроса ( "???" ), где должен быть иврит.

это то, что я 'мы пробовали, используя pandas и sqlalchemy:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('mssql+pymssql://server/test?charset=utf8')
connection = engine.connect()

df = pd.read_csv("temp.csv", low_memory=False, encoding="UTF-8")
table_name = "test"
df.to_sql(table_name, connection, index=False, if_exists="append")

это правильно загружает таблицу, но не пишет на иврите,
есть предложения?

1 Ответ

0 голосов
/ 25 ноября 2018

Вам необходимо изменить тип данных вашего столбца.text устарела, и вместо нее следует использовать varchar(MAX), однако ни один из них не может хранить символы Юникода.Для хранения символов Юникода вам необходимо использовать ntext, что также не рекомендуется;вам нужно использовать nvarchar(MAX).

Чтобы изменить определение столбца, вы можете использовать этот псевдо-SQL (вам нужно заменить части в скобках ({}) соответствующими именами объектов):

ALTER TABLE {YourTable} ALTER COLUMN {YourColumn} nvarchar(MAX);

Редактировать: обратите внимание, это не восстановит все данные, потерянные в вашем столбце.Как только не-ANSI символ вставляется в varchar (или подобный) тип данных, данные немедленно теряются, и невозможно восстановить, кроме как путем изменения типа данных и повторного входа.

...