日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何處理將UTF8編碼的文件(代碼頁=65001)導入到SQL SERVER中的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在挪威,我們有3個非常令人討厭的角色,??aka,他們制造了各種各樣的問題。自2008年以來,微軟決定不再支持代碼頁65001。對于使用OPENROWSET(BULK)將UTF-8文件導入到SQL SERVER中并保留??aka令牌的問題,我找到了一個可管理的解決方案。

我創建了一個PowerShell腳本,該腳本使用StreamReader和StreamWriter將文件從UTF-8轉換為默認編碼ANSI。

$filename = "C:TestUTF8_file.txt"
$outfile = "C:TestANSI_file.txt"
$reader = new-object System.IO.StreamReader($filename, [System.Text.Encoding]::GetEncoding(65001))
$stream = new-object System.IO.StreamWriter($outfile, $false, [System.Text.Encoding]::Default)

我在同一進程中剝離了文件的第一行,即標題行。

$i=1
while(($line = $reader.ReadLine()) -ne $null) {
    if($i -gt 1) {
        $stream.WriteLine($line)
    }
    $i++
}
$reader.Close()
$stream.Close()

然后,我可以使用OPENROWSET將ANSI文件導入到SQL服務器中,并在此過程中操作數據。使用代碼頁1252,它等于丹麥_挪威排序規則。

    insert into SomeDatabase.dbo.SomeTable
SELECT [companynumber]
, case [role] when 'Styreformann' then 'Styreleder' when 'Styrets leder' then 'Styreleder' else rolle end as 'role'
, case [representant] when 'Y' then '1' else '0' end as 'representant'
, left((RIGHT('0000'+ CONVERT(VARCHAR,postnr),5)),4) end as 'postnr' 
, income*1000 as income
, null as person2id 
FROM OPENROWSET( BULK 'C:TestANSI_file.txt', 
FORMATFILE = 'C:TestFormatBulkInsert_file.xml'
, CODEPAGE =1252
, ROWS_PER_BATCH = 50000    
) as v 

此方法確保了挪威令牌的正確顯示。格式化文件如下所示:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=';"' />
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR='";"' />
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR='";"' />
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR='";' />
    <FIELD ID="5" xsi:type="CharTerm" TERMINATOR=';' />
    <FIELD ID="6" xsi:type="CharTerm" TERMINATOR='
' />
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="companynumber" xsi:type="SQLINT"/>
    <COLUMN SOURCE="2" NAME="role" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="3" NAME="representant" xsi:type="SQLBIT"/>
    <COLUMN SOURCE="4" NAME="postnr" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="5" NAME="income" xsi:type="SQLDECIMAL"/>
    <COLUMN SOURCE="6" NAME="person2id" xsi:type="SQLINT"/>
  </ROW>
</BCPFORMAT>

希望這對其他人有幫助,因為我花了相當多的時間在Google上搜索才找到解決這個問題的方法。

推薦答案

改為轉換為UTF16。這是SQL Server的原生NCHAR格式,并允許完全表示Unicode值。

要執行此操作,您必須在格式化文件中指定SQLNCHAR或SQLNVARCHAR,并注意以下注意事項:

要使格式化文件使用Unicode字符數據文件,所有輸入字段都必須是Unicode文本字符串(即固定大小或以字符結尾的Unicode字符串)。

http://msdn.microsoft.com/en-us/library/ms178129.aspx

另一種方法是將其作為二進制數據加載,并使用CONVERT函數將其從VARBINARY轉換為NVARCHAR(即UTF-16),然后轉換為所需的代碼頁,即VARCHAR

這篇關于如何處理將UTF8編碼的文件(代碼頁=65001)導入到SQL SERVER中的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:codepage=65001 errorHowtohandleimportoffilewithUTF-8encoding exceptio
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定