還到一個無解的怪問題
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)
SSAS 作業已因鎖定衝突而取消
SSAS在process 與 mdx query並存應用時,如果mdx 語法含crossjoin或維度member很多時,就容易顯示錯誤【作業已因鎖定衝突而取消。】 當然,SSAS應是process與 query分開時段執行,但因種種先知後知原因,專案就是有需要這樣應用,即使是已...
-
上網找了免費的白箱檢測工具,找到了 puma scan 因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....) 更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。 ht...
-
freeFTPd是套免費的SFTP SERVER支援22 port SFTP及21port FTP,一般找到免費的都不支援SFTP只有技援FTPS。 之前一直有個困擾在幾台主機安裝後,有幾台重開機後,SFTP SERVER必須手動去啟動,一直以來老是搞不懂為什麼,今天看到一篇文...
-
在SQL SERVER 2008R2 10.50.2500 上建立一個LIKED SERVER連結INFORMIX,OPENQUERY時遇到了一個錯誤 testab中只有一個欄位coltest varchar(40),輸入一個UNICODE的字,查詢後出現錯誤 s...
沒有留言:
張貼留言