還到一個無解的怪問題
schema.ini 內容如下
[test.txt]
ColNameHeader=False
Format=Delimited(;)
test.txt資料內容如下
test;1234;3FDS
test;1234;6F8S
查詢SQL如下
SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0','Text;Database=C:\TEMP\;',
'SELECT * FROM test.txt' )
回傳結果如下
F1 F2 F3 F4
test 1234 NULL
test 1234 68.00
F4一欄的值都不對了。
參考 KB說明,在schema.ini加了MaxScanRows=0設定,就正常了
F1 F2 F3
test 1234 3FDS
test 1234 6F8S
巴特....把test.txt資料內容改成如下
test;1234;6F8S
test;1234;3FDS
結果卻又不正確了
F1 F2 F3
test 1234 68.00
test 1234 NULL
?F?S 到底隱藏著什麼密碼學呢?? 只要他放在第一行不管哪一欄就亂套了.....
這是什麼情形啊....無解
2014/07/17 更新
因為讀檔時,這個欄位變成數值型態的機率有點高,後來用了一個撇步去克服。
就是先建一個暫存檔,例temp.txt,里頭只放一筆全部都是字串態的資料行,例
XXXX;XXXX;XXXX
然後在OPENQUERY讀取前,利用xp_cmdshell 先把這個檔利用copy指令與暫存檔合併在一起
copy /b /y temp.txt+test.txt test_new.txt
schema.ini 內容加入MaxScanRows=1,強迫以第一行的型態來設定欄位型態
[test.txt]
ColNameHeader=False
Format=Delimited(;)
MaxScanRows=1
再讀取後排除第一筆暫存資料列,就可以正常寫入檔案內容了
SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0','Text;Database=C:\TEMP\;',
'SELECT * FROM test_new.txt' ) WHERE F1 <> 'XXXX'
訂閱:
文章 (Atom)
IIS 網站無法下載中文檔名檔案因為取消高位元字元
網址+中文檔案名稱方式下載檔案顯示 404 - 找不到檔案或目錄。 但英數字檔案名稱則可下載。 因為設定GCB IIS,其中1項 將高位元字元預設取消勾選了。 27 TWGCB-04-014-0028 要求篩選與其他限制模組 允許高位元字元 這項原則設定決定查詢...
-
一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...
-
Row.Cells[2].Text == "abc" ? "ok" : "not ok" ; 或加入Microsoft. VisualBasic 參考使用 vb namespace using Microsoft...
-
freeFTPd是套免費的SFTP SERVER支援22 port SFTP及21port FTP,一般找到免費的都不支援SFTP只有技援FTPS。 之前一直有個困擾在幾台主機安裝後,有幾台重開機後,SFTP SERVER必須手動去啟動,一直以來老是搞不懂為什麼,今天看到一篇文...