sql >> Databasteknik >  >> RDS >> Mysql

Tillbaka snedstreck i csv-filen

Som standard använder LOAD DATA \ som escape-tecken. Tänk på din input:

"abcd", "efgh\", "ijk"

Den sekvensen \" tolkas som ett ordagrant icke-omslutande citat, inte ett snedstreck följt av ett citat.

Det bästa lösningen är att på rätt sätt undvika bakåtstreck i din CSV-fil, t.ex.:

"abcd", "efgh\\", "ijk"

Om du inte kan göra det kan du inaktivera escape i din LOAD DATA INFILE-sats genom att lägga till ESCAPED BY '' till uttalandet. Det kommer att förhindra att den känner igen \ som ett escape-tecken, men kom ihåg att det kommer att inaktivera alla andra escape-sekvenser i din indatafil. Det kommer också att importera efgh\ , kommer snedstrecket inte att ignoreras.

Om du importerar efgh\ är oacceptabelt måste du fixa formatet på din indatafil, eller ta bort den avslutande \ senare i din applikationslogik eller med en annan SQL-fråga.

Se MySQL LOAD DATA INFILE Syntax för mer information om filformatsalternativ.

Hoppas det hjälper.




  1. MySQL returnerar falskt när flera rader möter WHERE-satsen

  2. Hur framtvingar jag unikhet i en tabell?

  3. Hur definierar man en pl sql-funktion med dynamiska returtyper i Oracle?

  4. Hur kan jag få udda tecken i en sträng med SQL