SQL 用于混合语言(阿拉伯语、英语、希腊字符、印地语数字等)的服务器排序规则

What SQL Server collation to use for mixed languages (Arabic, English, Greek Characters, Hindi numbers, etc)

我有一个主要来自维基数据的混合数据,它包含阿拉伯语字段、英语字段,并且阿拉伯语和英语的数据混合了其他语言,例如希腊字符、印地语数字、俄语、表情符号,西里尔字母:

可能的数据示例:

ڱ
١٩٣٣
Белгородский государственный университет

上面的示例显示为 ?在我的数据库中,我尝试使用不同的排序规则选项,例如

ARABIC_CI_AS
Arabic_CI_AI_KS
Arabic_100_CI_AI_KS_WS

我的 table 架构:

CREATE TABLE [dbo].[NED_Corpus_True_Expanded]
(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [Wikidata_IQ] [nvarchar](50) NULL,
    [WikidataType] [nvarchar](500) NULL,
    [WikidataArabicLabel] [nvarchar](max) NULL,
    [WikidataEnglishLabel] [nvarchar](max) NULL,
    [WikidataAraliases] [nvarchar](max) NULL,
    [WikidataEnaliases] [nvarchar](max) NULL,
    [WikidataArabicDescrption] [nvarchar](max) NULL,
    [WikidataEnglishDescrption] [nvarchar](max) NULL,
    [WikidataMainCategory] [nvarchar](max) NULL,
    [WikipediaArabicLabel] [nvarchar](max) NULL,
    [WikipediaArabicDescrption] [nvarchar](max) NULL,
    [Label] [float] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

但是对于混合数据无效,这里是数据的截图:

我使用以下脚本将 CSV 中的数据插入 SQL table:

import pyodbc
import pandas as pd
# insert data from csv file into dataframe.
# working directory for csv file: type "pwd" in Azure Data Studio or Linux
# working directory in Windows c:\users\username
df = pd.read_csv("ned_true_new.csv")
df.fillna("", inplace=True)
df.info()
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
 
#password = 'yourpassword' 
#cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username)
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server=srvr;"
                      "Database=db;"
                      "Trusted_Connection=yes;")
cursor = cnxn.cursor()
# Insert Dataframe into SQL Server:
for index, row in df.iterrows():
     #print(row)
     cursor.execute('''INSERT INTO [dbo].[NED_Corpus_True_Expanded]
           ([Wikidata_IQ]
           ,[WikidataType]
           ,[WikidataArabicLabel]
           ,[WikidataEnglishLabel]
           ,WikidataAraliases
           ,WikidataEnaliases
           ,[WikidataArabicDescrption]
           ,[WikidataEnglishDescrption]
           ,[WikidataMainCategory]
           ,[WikipediaArabicLabel]
           ,[WikipediaArabicDescrption]
           ,[Label])
     VALUES (?,?,?,?,?,?,?,?,?,?,?,?)''', row.id, row.type, row.arlabel,row.enlabel,row.araliases, row.enaliases,row.ardescription, row.endescription, row.maincategory, row.arwiki,row.wikiDescrption,row.Label )
cnxn.commit()
cursor.close()

我想 post 社区使用的解决方案,我使用 default 排序规则创建了一个新数据库,并且我使用了相同的架构 ( nvarchar) 导入数据的代码相同,默认排序规则适用于各种数据语言。