3

我有几个文件从 Sql-Server 数据库导出为制表符分隔的 unicode 文本(数字数据和外文名称)。

如何将这些文件加载​​到 R 中?

每个文件的第一个位置都有一个特殊字符。我假设那是BOM。

如果没有任何选项(除了headerand sep) ,即使使用正确的分隔符规范read.table,也将所有数据放在一列中。\t

打开连接并跳过前三个字节会导致empty beginning of file.

我已经尝试了所有可用的fileEncoding值:我得到了line 1 didn't have 29 elementsmore columns than column names

我真的被这个难住了。理想情况下,我希望在 R 中处理所有内容,但欢迎任何 awk/powershell 建议来修复这些文件。这只是BOM问题吗?我不能做的一件事是控制 Sql-Server 的导出(我不拥有 SSIS 包)。谢谢。

编辑

对于那些有兴趣使用 unicode 选项获取 SqlServer 导出的 csv 中的数据列的人:SqlServer 以 NUL 字符开始其 csv 导出。此链接讨论了如何实际“看到”这些特殊字符:

Python CSV 错误:行包含 NULL 字节

编辑

这就是我为了获得 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() 
4

0 回答 0