我正在尝试将包含希伯来语文本的 .csv 文件中的表写入 SQL Server 数据库。
该表有效,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")
这会正确加载表格,但无法写入希伯来语,
有什么建议吗?
最佳答案
您需要更改列的数据类型。 text
已弃用,并且 varchar(MAX)
应该使用,但是,它们都不能存储 unicode 字符。要存储 unicode 字符,您需要使用 ntext
,这也已被弃用;您需要使用nvarchar(MAX)
.
要更改列的定义,您可以使用此伪 SQL(您需要将大括号 ( {}
) 中的部分替换为适当的对象名称):
ALTER TABLE {YourTable} ALTER COLUMN {YourColumn} nvarchar(MAX);
编辑:请注意,这将不会恢复列中丢失的任何数据。一旦将非 ANSI 字符插入 varchar
(或类似)数据类型,数据会立即丢失,并且无法恢复,除非更改数据类型并重新输入。
关于python - 用python将unicode数据写入mssql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53468205/