Mysql Load File Error loading inaccurate data









up vote
0
down vote

favorite












Hi I have a csv dataset like



ukwn,34,2018-10-01,"757,271"



ukwn,3,2018-10-01,"7,342"



"hi",23,2018-10-01,"3,483,887"



i want to insert it in the database so i made the code:



LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY 'n'
IGNORE 1 LINES
(col1,col2,col3,col4)



But i fails to insert the col4 (4th row) as there is ',' inside a "" like "7,345"



I tried then,



LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
(col1,col2,col3,col4)



But this time it enters the partial data in col4 like out of "7,344" it only enters "7










share|improve this question

























    up vote
    0
    down vote

    favorite












    Hi I have a csv dataset like



    ukwn,34,2018-10-01,"757,271"



    ukwn,3,2018-10-01,"7,342"



    "hi",23,2018-10-01,"3,483,887"



    i want to insert it in the database so i made the code:



    LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY 'n'
    IGNORE 1 LINES
    (col1,col2,col3,col4)



    But i fails to insert the col4 (4th row) as there is ',' inside a "" like "7,345"



    I tried then,



    LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY 'n'
    IGNORE 1 LINES
    (col1,col2,col3,col4)



    But this time it enters the partial data in col4 like out of "7,344" it only enters "7










    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      Hi I have a csv dataset like



      ukwn,34,2018-10-01,"757,271"



      ukwn,3,2018-10-01,"7,342"



      "hi",23,2018-10-01,"3,483,887"



      i want to insert it in the database so i made the code:



      LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
      FIELDS TERMINATED BY ','
      OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY 'n'
      IGNORE 1 LINES
      (col1,col2,col3,col4)



      But i fails to insert the col4 (4th row) as there is ',' inside a "" like "7,345"



      I tried then,



      LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
      FIELDS TERMINATED BY ','
      LINES TERMINATED BY 'n'
      IGNORE 1 LINES
      (col1,col2,col3,col4)



      But this time it enters the partial data in col4 like out of "7,344" it only enters "7










      share|improve this question













      Hi I have a csv dataset like



      ukwn,34,2018-10-01,"757,271"



      ukwn,3,2018-10-01,"7,342"



      "hi",23,2018-10-01,"3,483,887"



      i want to insert it in the database so i made the code:



      LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
      FIELDS TERMINATED BY ','
      OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY 'n'
      IGNORE 1 LINES
      (col1,col2,col3,col4)



      But i fails to insert the col4 (4th row) as there is ',' inside a "" like "7,345"



      I tried then,



      LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE app_spend_metric
      FIELDS TERMINATED BY ','
      LINES TERMINATED BY 'n'
      IGNORE 1 LINES
      (col1,col2,col3,col4)



      But this time it enters the partial data in col4 like out of "7,344" it only enters "7







      mysql mariadb






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 8 at 14:17









      user9092050

      54




      54






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          If col4 is numeric (eg, INT), then the problem is as follows:



          1. Parse the line to get the string "7,344"

          2. Strip the enclosing ": 7,344

          3. Store the string into the INT column. This requires converting that string to a number.

          4. Conversion stops at the first non-numeric character, namely the comma.

          5. Result: The col4 is set to 7, and ,344 is tossed.

          MySQL cannot deal with "thousands-separators" in numbers. But you could strip them:



          LOAD ...
          (col1, col2, col3, @num)
          SET col4 = REPLACE(@num, ',', '')





          share|improve this answer






















          • Hi, there are 4 colums
            – user9092050
            17 hours ago










          • @user9092050 - I rewrote my answer to explain how to parse the commas.
            – Rick James
            11 hours ago










          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',
          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%2f53209603%2fmysql-load-file-error-loading-inaccurate-data%23new-answer', 'question_page');

          );

          Post as a guest






























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          0
          down vote













          If col4 is numeric (eg, INT), then the problem is as follows:



          1. Parse the line to get the string "7,344"

          2. Strip the enclosing ": 7,344

          3. Store the string into the INT column. This requires converting that string to a number.

          4. Conversion stops at the first non-numeric character, namely the comma.

          5. Result: The col4 is set to 7, and ,344 is tossed.

          MySQL cannot deal with "thousands-separators" in numbers. But you could strip them:



          LOAD ...
          (col1, col2, col3, @num)
          SET col4 = REPLACE(@num, ',', '')





          share|improve this answer






















          • Hi, there are 4 colums
            – user9092050
            17 hours ago










          • @user9092050 - I rewrote my answer to explain how to parse the commas.
            – Rick James
            11 hours ago














          up vote
          0
          down vote













          If col4 is numeric (eg, INT), then the problem is as follows:



          1. Parse the line to get the string "7,344"

          2. Strip the enclosing ": 7,344

          3. Store the string into the INT column. This requires converting that string to a number.

          4. Conversion stops at the first non-numeric character, namely the comma.

          5. Result: The col4 is set to 7, and ,344 is tossed.

          MySQL cannot deal with "thousands-separators" in numbers. But you could strip them:



          LOAD ...
          (col1, col2, col3, @num)
          SET col4 = REPLACE(@num, ',', '')





          share|improve this answer






















          • Hi, there are 4 colums
            – user9092050
            17 hours ago










          • @user9092050 - I rewrote my answer to explain how to parse the commas.
            – Rick James
            11 hours ago












          up vote
          0
          down vote










          up vote
          0
          down vote









          If col4 is numeric (eg, INT), then the problem is as follows:



          1. Parse the line to get the string "7,344"

          2. Strip the enclosing ": 7,344

          3. Store the string into the INT column. This requires converting that string to a number.

          4. Conversion stops at the first non-numeric character, namely the comma.

          5. Result: The col4 is set to 7, and ,344 is tossed.

          MySQL cannot deal with "thousands-separators" in numbers. But you could strip them:



          LOAD ...
          (col1, col2, col3, @num)
          SET col4 = REPLACE(@num, ',', '')





          share|improve this answer














          If col4 is numeric (eg, INT), then the problem is as follows:



          1. Parse the line to get the string "7,344"

          2. Strip the enclosing ": 7,344

          3. Store the string into the INT column. This requires converting that string to a number.

          4. Conversion stops at the first non-numeric character, namely the comma.

          5. Result: The col4 is set to 7, and ,344 is tossed.

          MySQL cannot deal with "thousands-separators" in numbers. But you could strip them:



          LOAD ...
          (col1, col2, col3, @num)
          SET col4 = REPLACE(@num, ',', '')






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 11 hours ago

























          answered Nov 8 at 20:00









          Rick James

          63.8k55593




          63.8k55593











          • Hi, there are 4 colums
            – user9092050
            17 hours ago










          • @user9092050 - I rewrote my answer to explain how to parse the commas.
            – Rick James
            11 hours ago
















          • Hi, there are 4 colums
            – user9092050
            17 hours ago










          • @user9092050 - I rewrote my answer to explain how to parse the commas.
            – Rick James
            11 hours ago















          Hi, there are 4 colums
          – user9092050
          17 hours ago




          Hi, there are 4 colums
          – user9092050
          17 hours ago












          @user9092050 - I rewrote my answer to explain how to parse the commas.
          – Rick James
          11 hours ago




          @user9092050 - I rewrote my answer to explain how to parse the commas.
          – Rick James
          11 hours ago

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53209603%2fmysql-load-file-error-loading-inaccurate-data%23new-answer', 'question_page');

          );

          Post as a guest














































































          Popular posts from this blog

          𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

          Edmonton

          Crossroads (UK TV series)