CSV parser documentation












0















I've been using fast-csv as my converter library for a while now. A problem emerged when a client actually attempted to upload a csv files that actually contained ';' as a delimiter instead of the default ','. The NPM documentation explicitly says that all methods should accept an 'option' (don't understand why not an object) to actually switch these flags. Of course I can always go into the source js file and change the delimiter manually, but I'd really like to understand this documentation since its all part of my growing as a developer, but still I can't manage to grasp it on how to actually use these options (delimiter) when parsing it on my code. If none of you guys can understand it either, maybe you have some recommendations regarding csv parsers on javascript? Maybe a manual script would be more versatile and useful?



Documentation sample from (fast-csv on npm):



All methods accept the following options

objectMode=true: Ensure that data events have an object emitted rather than the stringified version set to false to have a stringified buffer.
headers=false: Set to true if you expect the first line of your CSV to contain headers, alternatly you can specify an array of headers to use. You can also specify a sparse array to omit some of the columns.
ignoreEmpty=false: If you wish to ignore empty rows.
discardUnmappedColumns=false: If you want to discard columns that do not map to a header.
strictColumnHandling=false: If you want to consider empty lines/lines with too few fields as errors - Only to be used with headers=true
renameHeaders=false: If you want the first line of the file to be removed and replaced by the one provided in the headers option - Only to be used with headers=[String]
delimiter=',': If your data uses an alternate delimiter such as ; or t.


Also, here is a sample code of how it works, and also how I use it (with pipe):



var stream = fs.createReadStream("my.csv");

var csvStream = csv()
.on("data", function(data){
console.log(data);
})
.on("end", function(){
console.log("done");
});

stream.pipe(csvStream);

//or

var csvStream = csv
.parse()
.on("data", function(data){
console.log(data);
})
.on("end", function(){
console.log("done");
});

stream.pipe(csvStream);


PS: I have tried it asking it elsewhere (where the package is published), but had no replies.










share|improve this question



























    0















    I've been using fast-csv as my converter library for a while now. A problem emerged when a client actually attempted to upload a csv files that actually contained ';' as a delimiter instead of the default ','. The NPM documentation explicitly says that all methods should accept an 'option' (don't understand why not an object) to actually switch these flags. Of course I can always go into the source js file and change the delimiter manually, but I'd really like to understand this documentation since its all part of my growing as a developer, but still I can't manage to grasp it on how to actually use these options (delimiter) when parsing it on my code. If none of you guys can understand it either, maybe you have some recommendations regarding csv parsers on javascript? Maybe a manual script would be more versatile and useful?



    Documentation sample from (fast-csv on npm):



    All methods accept the following options

    objectMode=true: Ensure that data events have an object emitted rather than the stringified version set to false to have a stringified buffer.
    headers=false: Set to true if you expect the first line of your CSV to contain headers, alternatly you can specify an array of headers to use. You can also specify a sparse array to omit some of the columns.
    ignoreEmpty=false: If you wish to ignore empty rows.
    discardUnmappedColumns=false: If you want to discard columns that do not map to a header.
    strictColumnHandling=false: If you want to consider empty lines/lines with too few fields as errors - Only to be used with headers=true
    renameHeaders=false: If you want the first line of the file to be removed and replaced by the one provided in the headers option - Only to be used with headers=[String]
    delimiter=',': If your data uses an alternate delimiter such as ; or t.


    Also, here is a sample code of how it works, and also how I use it (with pipe):



    var stream = fs.createReadStream("my.csv");

    var csvStream = csv()
    .on("data", function(data){
    console.log(data);
    })
    .on("end", function(){
    console.log("done");
    });

    stream.pipe(csvStream);

    //or

    var csvStream = csv
    .parse()
    .on("data", function(data){
    console.log(data);
    })
    .on("end", function(){
    console.log("done");
    });

    stream.pipe(csvStream);


    PS: I have tried it asking it elsewhere (where the package is published), but had no replies.










    share|improve this question

























      0












      0








      0








      I've been using fast-csv as my converter library for a while now. A problem emerged when a client actually attempted to upload a csv files that actually contained ';' as a delimiter instead of the default ','. The NPM documentation explicitly says that all methods should accept an 'option' (don't understand why not an object) to actually switch these flags. Of course I can always go into the source js file and change the delimiter manually, but I'd really like to understand this documentation since its all part of my growing as a developer, but still I can't manage to grasp it on how to actually use these options (delimiter) when parsing it on my code. If none of you guys can understand it either, maybe you have some recommendations regarding csv parsers on javascript? Maybe a manual script would be more versatile and useful?



      Documentation sample from (fast-csv on npm):



      All methods accept the following options

      objectMode=true: Ensure that data events have an object emitted rather than the stringified version set to false to have a stringified buffer.
      headers=false: Set to true if you expect the first line of your CSV to contain headers, alternatly you can specify an array of headers to use. You can also specify a sparse array to omit some of the columns.
      ignoreEmpty=false: If you wish to ignore empty rows.
      discardUnmappedColumns=false: If you want to discard columns that do not map to a header.
      strictColumnHandling=false: If you want to consider empty lines/lines with too few fields as errors - Only to be used with headers=true
      renameHeaders=false: If you want the first line of the file to be removed and replaced by the one provided in the headers option - Only to be used with headers=[String]
      delimiter=',': If your data uses an alternate delimiter such as ; or t.


      Also, here is a sample code of how it works, and also how I use it (with pipe):



      var stream = fs.createReadStream("my.csv");

      var csvStream = csv()
      .on("data", function(data){
      console.log(data);
      })
      .on("end", function(){
      console.log("done");
      });

      stream.pipe(csvStream);

      //or

      var csvStream = csv
      .parse()
      .on("data", function(data){
      console.log(data);
      })
      .on("end", function(){
      console.log("done");
      });

      stream.pipe(csvStream);


      PS: I have tried it asking it elsewhere (where the package is published), but had no replies.










      share|improve this question














      I've been using fast-csv as my converter library for a while now. A problem emerged when a client actually attempted to upload a csv files that actually contained ';' as a delimiter instead of the default ','. The NPM documentation explicitly says that all methods should accept an 'option' (don't understand why not an object) to actually switch these flags. Of course I can always go into the source js file and change the delimiter manually, but I'd really like to understand this documentation since its all part of my growing as a developer, but still I can't manage to grasp it on how to actually use these options (delimiter) when parsing it on my code. If none of you guys can understand it either, maybe you have some recommendations regarding csv parsers on javascript? Maybe a manual script would be more versatile and useful?



      Documentation sample from (fast-csv on npm):



      All methods accept the following options

      objectMode=true: Ensure that data events have an object emitted rather than the stringified version set to false to have a stringified buffer.
      headers=false: Set to true if you expect the first line of your CSV to contain headers, alternatly you can specify an array of headers to use. You can also specify a sparse array to omit some of the columns.
      ignoreEmpty=false: If you wish to ignore empty rows.
      discardUnmappedColumns=false: If you want to discard columns that do not map to a header.
      strictColumnHandling=false: If you want to consider empty lines/lines with too few fields as errors - Only to be used with headers=true
      renameHeaders=false: If you want the first line of the file to be removed and replaced by the one provided in the headers option - Only to be used with headers=[String]
      delimiter=',': If your data uses an alternate delimiter such as ; or t.


      Also, here is a sample code of how it works, and also how I use it (with pipe):



      var stream = fs.createReadStream("my.csv");

      var csvStream = csv()
      .on("data", function(data){
      console.log(data);
      })
      .on("end", function(){
      console.log("done");
      });

      stream.pipe(csvStream);

      //or

      var csvStream = csv
      .parse()
      .on("data", function(data){
      console.log(data);
      })
      .on("end", function(){
      console.log("done");
      });

      stream.pipe(csvStream);


      PS: I have tried it asking it elsewhere (where the package is published), but had no replies.







      javascript node.js csv npm fs






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 26 '18 at 1:09









      Bruno GiannottiBruno Giannotti

      357




      357
























          1 Answer
          1






          active

          oldest

          votes


















          1















          The NPM documentation explicitly says that all methods should accept
          an 'option' (don't understand why not an object) to actually switch
          these flags




          The quoted text basically means that all methods accept a so-called options object as their last parameter. You can specify an alternate delimiter by setting the corresponding field in that object.




          but I'd really like to understand this documentation since its all
          part of my growing as a developer




          I strongly recommend looking at the tests whenever you feel something's not clearly explained in the docs. There's actually a test case for the exact scenario you're describing:



          it.should("support semicolon delimiters", function (next) {
          var actual = ;
          csv
          .fromPath(path.resolve(__dirname, "./assets/test16.txt"), {headers: true, delimiter: ";"})
          .on("data", function (data) {
          actual.push(data);
          })
          .on("error", next)
          .on("end", function (count) {
          assert.deepEqual(actual, expected14);
          assert.equal(count, actual.length);
          next();
          });
          });





          share|improve this answer


























          • Thank you so much for your time and tips, people like you make this place great!

            – Bruno Giannotti
            Nov 26 '18 at 9:11











          • You're very welcome :)

            – fardjad
            Nov 26 '18 at 13:24











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53473605%2fcsv-parser-documentation%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1















          The NPM documentation explicitly says that all methods should accept
          an 'option' (don't understand why not an object) to actually switch
          these flags




          The quoted text basically means that all methods accept a so-called options object as their last parameter. You can specify an alternate delimiter by setting the corresponding field in that object.




          but I'd really like to understand this documentation since its all
          part of my growing as a developer




          I strongly recommend looking at the tests whenever you feel something's not clearly explained in the docs. There's actually a test case for the exact scenario you're describing:



          it.should("support semicolon delimiters", function (next) {
          var actual = ;
          csv
          .fromPath(path.resolve(__dirname, "./assets/test16.txt"), {headers: true, delimiter: ";"})
          .on("data", function (data) {
          actual.push(data);
          })
          .on("error", next)
          .on("end", function (count) {
          assert.deepEqual(actual, expected14);
          assert.equal(count, actual.length);
          next();
          });
          });





          share|improve this answer


























          • Thank you so much for your time and tips, people like you make this place great!

            – Bruno Giannotti
            Nov 26 '18 at 9:11











          • You're very welcome :)

            – fardjad
            Nov 26 '18 at 13:24
















          1















          The NPM documentation explicitly says that all methods should accept
          an 'option' (don't understand why not an object) to actually switch
          these flags




          The quoted text basically means that all methods accept a so-called options object as their last parameter. You can specify an alternate delimiter by setting the corresponding field in that object.




          but I'd really like to understand this documentation since its all
          part of my growing as a developer




          I strongly recommend looking at the tests whenever you feel something's not clearly explained in the docs. There's actually a test case for the exact scenario you're describing:



          it.should("support semicolon delimiters", function (next) {
          var actual = ;
          csv
          .fromPath(path.resolve(__dirname, "./assets/test16.txt"), {headers: true, delimiter: ";"})
          .on("data", function (data) {
          actual.push(data);
          })
          .on("error", next)
          .on("end", function (count) {
          assert.deepEqual(actual, expected14);
          assert.equal(count, actual.length);
          next();
          });
          });





          share|improve this answer


























          • Thank you so much for your time and tips, people like you make this place great!

            – Bruno Giannotti
            Nov 26 '18 at 9:11











          • You're very welcome :)

            – fardjad
            Nov 26 '18 at 13:24














          1












          1








          1








          The NPM documentation explicitly says that all methods should accept
          an 'option' (don't understand why not an object) to actually switch
          these flags




          The quoted text basically means that all methods accept a so-called options object as their last parameter. You can specify an alternate delimiter by setting the corresponding field in that object.




          but I'd really like to understand this documentation since its all
          part of my growing as a developer




          I strongly recommend looking at the tests whenever you feel something's not clearly explained in the docs. There's actually a test case for the exact scenario you're describing:



          it.should("support semicolon delimiters", function (next) {
          var actual = ;
          csv
          .fromPath(path.resolve(__dirname, "./assets/test16.txt"), {headers: true, delimiter: ";"})
          .on("data", function (data) {
          actual.push(data);
          })
          .on("error", next)
          .on("end", function (count) {
          assert.deepEqual(actual, expected14);
          assert.equal(count, actual.length);
          next();
          });
          });





          share|improve this answer
















          The NPM documentation explicitly says that all methods should accept
          an 'option' (don't understand why not an object) to actually switch
          these flags




          The quoted text basically means that all methods accept a so-called options object as their last parameter. You can specify an alternate delimiter by setting the corresponding field in that object.




          but I'd really like to understand this documentation since its all
          part of my growing as a developer




          I strongly recommend looking at the tests whenever you feel something's not clearly explained in the docs. There's actually a test case for the exact scenario you're describing:



          it.should("support semicolon delimiters", function (next) {
          var actual = ;
          csv
          .fromPath(path.resolve(__dirname, "./assets/test16.txt"), {headers: true, delimiter: ";"})
          .on("data", function (data) {
          actual.push(data);
          })
          .on("error", next)
          .on("end", function (count) {
          assert.deepEqual(actual, expected14);
          assert.equal(count, actual.length);
          next();
          });
          });






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 26 '18 at 1:52

























          answered Nov 26 '18 at 1:46









          fardjadfardjad

          14.3k53862




          14.3k53862













          • Thank you so much for your time and tips, people like you make this place great!

            – Bruno Giannotti
            Nov 26 '18 at 9:11











          • You're very welcome :)

            – fardjad
            Nov 26 '18 at 13:24



















          • Thank you so much for your time and tips, people like you make this place great!

            – Bruno Giannotti
            Nov 26 '18 at 9:11











          • You're very welcome :)

            – fardjad
            Nov 26 '18 at 13:24

















          Thank you so much for your time and tips, people like you make this place great!

          – Bruno Giannotti
          Nov 26 '18 at 9:11





          Thank you so much for your time and tips, people like you make this place great!

          – Bruno Giannotti
          Nov 26 '18 at 9:11













          You're very welcome :)

          – fardjad
          Nov 26 '18 at 13:24





          You're very welcome :)

          – fardjad
          Nov 26 '18 at 13:24


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53473605%2fcsv-parser-documentation%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Lallio

          Unable to find Lightning Node

          Futebolista