我有几个文件从Sql-Server数据库导出为制表符分隔的unicode文本(数字数据和外来名称)。
如何将这些文件加载到R?
每个文件的第一个位置都有一个特殊字符。我认为这是BOM。
如果没有任何选项(超出header
和sep
),read.table
会将所有数据放入一列,即使使用正确的\t
分隔符规范也是如此。
打开连接并跳过前三个字节会转到empty beginning of file
。
我已尝试了所有可用的fileEncoding
值:我得到line 1 didn't have 29 elements
或more columns than column names
。
我真的很难过这个。理想情况下,我希望在R中处理所有内容,但欢迎使用任何awk / powershell建议来修复这些文件。这只是一个BOM问题吗?我无法做的一件事是控制从Sql-Server导出(我不拥有SSIS包)。感谢。
修改
对于那些有兴趣获取由SqlServer导出的csv中的数据列且unicode选项的人:SqlServer以NUL字符启动其csv导出。此链接讨论了如何实际查看'那些特殊字符:
Python CSV error: line contains NULL byte
修改
这就是我为了获得ASCII而继续前进的原因。但这不是我的问题的答案。
from os import listdir
from os.path import isfile, join
import unicodedata
import codecs
mypath = "C:\\Users\\Collapsed\\data"
filesOnly = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
for f in filesOnly:
print f
fln = mypath + "\\" + f
fl_in = codecs.open( fln , 'Ur', 'utf-16')
fl_out = open( mypath + "\\" + 'ascii_' + f , 'w' )
for line in fl_in:
fl_out.write( unicodedata.normalize('NFKD', line ).encode('ascii','ignore') )
fl_in.close()
fl_out.close()