2017-05-03 25 views
0

Facebookの投稿データをBigQueryにアップロードしていますので、投稿名、投稿メッセージ、 、等...BigQueryで二重引用符(「)が見つかりませんでしたが、引用符はアップロードされていません」

私はすべての"を削除してクリーンなすべてのポスト名とポストメッセージをしましたが、私はまだ、次のエラーを持っている:

file-00000000: Error detected while parsing row starting at position: 15934. Error: Missing close double quote (") character. (error code: invalid)

"は、このエラーが発生する可能性がありますよりも、何か他のものですか?

データをエクスポートしています必要であれば、そう、ここBQするgooglesheetが私のスクリプトはM:

function BQ_fb_export() { 
    var projectId = 'XXXXX'; 
    var fileId = 'XXXXXXX'; 
    var tableId = 'XXXXXXX' 

    // Define our load job. 
    var jobSpec = { 
    configuration: { 
     load: { 
     destinationTable: { 
      projectId: projectId, 
      datasetId: 'Facebook', 
      tableId: tableId 
     }, 
     allowJaggedRows: true, 
     writeDisposition: 'WRITE_TRUNCATE', 
     schema: { 
      fields: [ 
     {name: 'Page_ID', type: 'STRING'}, 
     {name: 'Post_ID', type: 'STRING'}, 
     {name: 'Post_creation_date', type: 'STRING'}, 
     {name: 'Post_name', type: 'STRING'}, 
     {name: 'Post_message', type: 'STRING'}, 
     {name: 'Link_to_post', type: 'STRING'}, 
     {name: 'Post_shared_link', type: 'STRING'}, 
     {name: 'Post_type', type: 'STRING'}, 
     {name: 'Post_reach', type: 'INTEGER'}, 
     {name: 'Post_organic_reach', type: 'INTEGER'}, 
     {name: 'Post_paid_reach', type: 'INTEGER'}, 
     {name: 'Post_viral_reach', type: 'INTEGER'}, 
     {name: 'Post_engaged_users', type: 'INTEGER'}, 
     {name: 'Post_likes', type: 'INTEGER'}, 
     {name: 'Post_shares', type: 'INTEGER'}, 
     {name: 'Post_comments', type: 'INTEGER'}, 
     {name: 'Post_link_clicks', type: 'INTEGER'}, 
     {name: 'Video_views', type: 'INTEGER'}, 
      ] 
     } 
     } 
    } 
    }; 

    var spreadsheet = SpreadsheetApp.openById(fileId); 
    var filename = spreadsheet.getName(); 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw_data"); 
    var Row_count = sheet.getLastRow(); 
    var data = sheet.getDataRange().getValues(); 

    var csvdata = ""; 
    for (var row = 1; row < data.length && row < Row_count + 1; row++) { 
    for (var col = 0; col < data[row].length; col++) { 
    var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>[email protected]\[\]^_`{|}~]/g; 
    var spaceRE = /\s+/g; 
     var cell = data[row][col].toString(); 

     if (cell.match(/http/g) && !cell.match(/www.facebook.com/g)) { 
     var cell = data[row][col].toString(); 
     } else if (!cell.match(/www.facebook.com/g)){ 
     var cell = data[row][col].toString().replace(punctRE, '').replace(spaceRE, ' '); 
     } 


     if (cell.indexOf(",") != -1) { 
     csvdata += "\"" + cell + "\""; 
     } else { 
     csvdata += cell; 
     } 

     if (col < data[row].length - 1) { 
     csvdata += ","; 
     } 
    } 
    csvdata += "\r\n"; 
    } 

    Logger.log(csvdata) 
    var data = Utilities.newBlob(csvdata, "application/octet-stream"); 

    // Execute the job. 
    BigQuery.Jobs.insert(jobSpec, projectId, data); 
    // This example assumes there is a sheet named "first" 
} 

答えて

1

私は最終的に問題は改行していないエラーのような二重引用符がそれを示唆する程度であったことを発見しました。だから私はまた私の投稿名と投稿メッセージの列からすべての改行を削除し、それは完全に働いた。ここに私のクリーニング変数があります:

var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>[email protected]\[\]^_`{|}~\r\n|\n|\r]/g; 

希望それは誰かを助けるかもしれません!

+0

@TobySpeight Thansさんのコメントです。私の答えが今より良いことを願っています! –

関連する問題