2017-09-26 7 views
-1

USQLで私はcsvファイルを読んでいます。テレメトリデータなので、csvファイルに不正なデータが含まれている可能性があります。私はそのcsvファイルを読んで、USQLでJObjectを作成しています。無効な文字をjsonオブジェクトのすべての値から置き換えて、悪いデータが原因でスクリプトが失敗しないようにしたい。私はjson出力を生成したい。USQLでJObjectを作成するときにjsonの値から無効な文字を削除します

JObjectを作成する前に、"\\""\""を空白に置き換えることを考えています。これが不正なデータを削除する正しい方法かどうかお知らせください。誰かがより良い解決策を持っているなら、私に知らせてください。また、離れて「\」と「\」」私は、他の文字を削除する必要があるのですから、私のUsqlコードを以下に言及されている - 。

@Data= 
SELECT new JObject(
         new JProperty("Name", Name),             
         new JProperty("Description", Description)      
        ).ToString() AS Document 
FROM @InputData; 
+0

を個人的に、私はデータテーブルにcsvファイルを読み込んでしまいますデータシートをシリアル化してjsonオブジェクトにします。データテーブルに読み込むことによって、各セルを読み取って検証し、正規表現を使用してクラスを不正な文字として取り除くことができます。まもなく私はすぐに無料ではありません。 –

+0

私は主にUSQLまたはC#のソリューションを探しています –

+0

サンプルデータの種類を事前に表示し、正確にどのように見たいかを指定できますか? – wBob

答えて

0

これは私がそれを行うだろうかです。これは、その後、あなたのDataTableとを構築します。 JSON.Netを使用して、これはあなただけで見つけて、削除したいものを置き換えるために正規表現式を作成する必要があり、あなたのためにすべてをシリアル化します。

void Main() 
{ 
    var dt = CSVtoDataTable(@"c:\temp\test.csv"); 

    foreach (DataRow row in dt.Rows) 
    foreach (DataColumn col in dt.Columns) 
    { 
     var str = row[col].ToString(); 
     row[col] = RegexReplace(str); 
    } 

    string json = JsonConvert.SerializeObject(dt); 
} 

public DataTable CSVtoDataTable(string filepath) 
{ 
    DataSet ds = new DataSet("Temp"); 

    using (OleDbConnection conn = new OleDbConnection($"Provider=Microsoft.Jet.OleDb.4.0; Data Source = {Path.GetDirectoryName(filepath)}; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"")) 
    { 
     conn.Open(); 
     OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + Path.GetFileName(filepath), conn); 
     adapter.Fill(ds); 
    } 
    return ds.Tables[0]; 

} 

public string RegexReplace(string s) 
{ 
    return Regex.Replace(s, @"\b[a-z]\w+", "*****"); 
} 
+0

ありがとうございます。私たちはこれを行うことができますが、作成中に問題を引き起こす可能性のあるすべての不正な文字を知りたいと思っていました。 JObject。Ex "\" in "test \" ing "が不正な文字です –

+0

正規表現を使用しないと、悪い文字がどのように認識されるのでしょうか? –

関連する問題