Sql-Serverデータベースからタブ区切りのUnicodeテキスト(数値データと外部名)としてエクスポートされたいくつかのファイルがあります。
これらのファイルをRにロードするにはどうすればよいですか?
各ファイルの最初の位置に特殊文字があります。それがBOMだと思います。
オプション(header
およびを超えるsep
)がない場合read.table
、適切な\t
区切り文字が指定されていても、すべてのデータが1つの列に配置されます。
接続を開き、最初の3バイトをスキップすると、になりempty beginning of file
ます。
fileEncoding
使用可能なすべての値を試しました。またはのいずれline 1 didn't have 29 elements
かを取得しますmore columns than column names
。
私はこれに本当に困惑しています。理想的には、すべてをR内で処理したいのですが、これらのファイルを修正するためのawk/powershellのアドバイスは大歓迎です。それは単なるBOMの問題ですか?私ができないことの1つは、SQL-Serverからのエクスポートを制御することです(私はSSISパッケージを所有していません)。ありがとう。
編集
SqlServerがUnicodeオプションをオンにしてエクスポートした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()