2017-09-26 8 views
-1

USQL에서 csv 파일을 읽습니다. 원격 측정 데이터이므로 csv 파일에 잘못된 데이터가있을 수 있습니다. 나는 그 csv 파일을 읽고 USQL에서 JObject를 생성하고있다. 잘못된 값 때문에 내 스크립트가 실패하지 않도록 json 객체의 모든 값에서 잘못된 문자를 대체하고 싶습니다. json 출력을 생성하고 싶습니다.USQL에서 JObject를 생성하는 동안 json의 값에서 잘못된 문자를 제거하십시오.

JObject을 만들기 전에 "\\""\""을 공백으로 바꿀 생각입니다. 이것이 잘못된 데이터를 제거하는 올바른 방법인지 알려주십시오. 누구든지 더 나은 해결책이 있다면 알려주세요. ..

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

을 개인적으로, 나는 데이터 테이블에 CSV를 읽고 다음 것 데이터 테이블을 json 객체로 직렬화하십시오. 데이터 테이블에 그것을 읽음으로써 당신은 그것을 읽을 때 각 셀의 유효성을 검사 할 수 있고 정규 표현식을 사용하여 클래스를 불법 문자로 제거 할 수 있습니다. 전체 코드 예제를 원한다면 o 나는 곧바로 무료가 아니기 때문에 곧 당신을 위해서 네. –

+0

저는 주로 USQL 또는 C# 솔루션을 찾고 있습니다 –

+0

이전에 어떻게 보았는지 그리고 어떻게 보살 피고 싶은지에 대한 샘플 데이터를 제공 할 수 있습니까? – wBob

답변

0

이이 구축됩니다 내가 다음 DataTable을하고 그것을 할 것입니다 방법입니다 - 또한 떨어져 "\"와 "\" "에서 내가 다른 문자를 제거해야합니까 내 Usql 코드는 아래에 언급 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

정규식을 사용하지 않으면 나쁜 문자가 무엇인지 시스템에서 어떻게 알 수 있습니까? –