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

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

          PHP code is not being executed, instead code shows on the page

          Malaysia to Papua New Guinea by motorcycle?