波兰语字符在表格中不匹配。选择比较

时间:2018-08-07 09:53:54

标签: sql-server powershell

我有一个SQL Server 2014表dbo.StringTranslation,其中有列Id int, StringId int, LanguageId int, String nvarchar(max),其中存储了翻译的语言字符串。

新的字符串来自下载的文件(通过Crowdin的api生成的.PO),我使用powershell脚本来解析.po文件以寻找新的翻译内容({不在dbo.StringTranslation中)。然后将新的翻译内容插入dbo.StringTranslation中。

这对除波兰语(pl)以外的所有语言(fr,it,de,da,sv,no,es)都适用。

我以这种方式比较字符串:

#existing strings
$SqlCmd = New-Object -TypeName System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT t.String FROM dbo.StringTranslation t WHERE t.LanguageId = 7;"
$SqlCmd.Connection = $SqlConn
$SqlAdp = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter
$SqlAdp.SelectCommand = $SqlCmd
$existingStringsDs = New-Object -TypeName System.Data.DataSet
$SqlAdp.Fill($existingStringsDs)
$SqlConn.Close()

#checking if string already exists
$dbString = $existingStringsDs.Tables[0].Select("String='" + $sourceString.Replace("'", "''") + "'")

If ($dbString.length -eq 0) {
    "$sourceString does not exist in dbo.String"
    #INSERT INTO...

}

当我进行抛光时,.Select(部分)中的某些字符串未正确匹配。

示例:“相册usunięty”存储在数据库中,但是

.Select("Album usunięty") 

返回一个空行($ dbString.length -eq 0)。

我认为必须将Locale / CultureInfo看来是“相册usunięty”转换为“相册usuniÄty”并因此未找到。

我尝试在.Select(之前设置表的语言环境,但是,它不起作用。

$table = $existingStringsDs.Tables[0]
$culture = New-Object system.globalization.cultureinfo($cultureInfo)
$table.Locale = $culture
$table.Select("...

我在做什么错了?

0 个答案:

没有答案