Hej,
Ska importera en .csvfil till MySQL, alla textvärden i filen är omslutna av " och här blir det problem.
Har testat med följande:
LOAD DATA LOCAL INFILE 'filnamn.csv'
INTO TABLE `test`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
IGNORE 1 LINES
...
Men det blir problem, " verkar aldrig tolkas rätt, för kolumnen tidszon, som ser ut såhär:
"Europe: France, Germany, Poland (GMT+1)"
Det blir alltså fyra kolumner av ovanstående och en förskjutning i filen. Förslag på hur jag löser detta? Har suttit och Googlat i 45 minuter nu, men hittar inget som fungerar.
Jag har nu efter tre timmar fått den att suga in alla fält, men " tolkas fortfarande inte, utan följer med in i databasen.
Vad kan det ha med att göra?
SQL frågan ser ut såhär:
LOAD DATA LOCAL INFILE '/tmp/phpl9njo8'
INTO TABLE temp_19_10_2009_16_51_00
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
Samma fel igen..
Såhär ser frågan ut:
LOAD DATA INFILE <datasource>
INTO TABLE `bkp_campaign`
CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'
Felet är:
Incorrect datetime value: ' "2008-04-14 14:15:57"
' for column 'created_at' at row 1
Alltså, jag kommer inte överens med det här, hur jag än gör så fungerar det inte när fälten i min csv-fil använder " " runt om.
Behöver köra det här med PHP, men har även testat frågan direkt i MySQL konsollen med exakt samma resultat.
Kan det här bero på teckenkodning, varför tolkas inte " som OPTIONALLY ENCLOSED BY? Det sjuka är ju att det blir exakt samma resultat oavsett om jag kör genom PHP eller direkt i MySQL konsollen.
Behöver lösa det här på ett vettigt sätt.