我有几个文件从 Sql-Server 数据库导出为制表符分隔的 unicode 文本(数字数据和外文名称)。
如何将这些文件加载到 R 中?
每个文件的第一个位置都有一个特殊字符。我假设那是BOM。
如果没有任何选项(除了header
and 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 包)。谢谢。
编辑
对于那些有兴趣使用 unicode 选项获取 SqlServer 导出的 csv 中的数据列的人:SqlServer 以 NUL 字符开始其 csv 导出。此链接讨论了如何实际“看到”这些特殊字符:
编辑
这就是我为了获得 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()