Ik heb een best wel enorme CSV die ik wil importeren in een tabel, en dat doe ik mbv LOAD DATA INFILE, uiteraard. Volgens SHOW VARIABLES staat alles op utf8 en ook in de query browser is te zien dat de betreffende tabel helemaal utf8 is.
Ik krijg de volgende error:
Het zijn inderdaad een paar miljoen rows en de file is bijna 900MB...
Dus de file met de hand wijzigen is geen optie
Dit is de code die ik ervoor gebruik:
Wel heb ik in alle traagheid met een hexeditor een BOM aan de file toegevoegd, maar dat zorgt er alleen maar voor dat mysql er helemaal niets meer van snapt. Ik heb ook geprobeerd CHARACTER SET 'utf8' aan het statement toe te voegen, maar dat maakt niets uit.
Ik neem voor de zekerheid maar aan dat deze karakters wel utf8 karakters zijn, ik zou in ieder geval niet weten wat het anders is. Gezien de herkomst van de file mag ik er vanuit gaan dat de file verder helemaal in orde is.
Maar wat kan ik nu doen om die data in m'n tabel te krijgen?
Wat specs:
Windows Server 2008 R2
MySQL 5.1.52-community
Query browser 1.2.17
Update:
Net nog even geverifiëerd met een hex-editor, en de vier bytes zijn inderdaad geldige utf-8 bytes. Ze staan met z'n vieren voor één chinees karakter, en wel 𡎚 (als dat leesbaar is
).
Ik krijg de volgende error:
code:
1
| Incorrect string value: '\xF0\xA1\x8E\x9A' for column 'alternatenames' at row 1170974 |
Het zijn inderdaad een paar miljoen rows en de file is bijna 900MB...
Dus de file met de hand wijzigen is geen optie
Dit is de code die ik ervoor gebruik:
SQL:
1
2
3
4
5
6
7
| LOAD DATA INFILE 'd:\\upload\\data.txt' REPLACE INTO TABLE `locations` CHARACTER SET 'utf8' FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (@alternatenames, `veld`, ...) SET alternatenames=NULLIF(@alternatenames,''); |
Wel heb ik in alle traagheid met een hexeditor een BOM aan de file toegevoegd, maar dat zorgt er alleen maar voor dat mysql er helemaal niets meer van snapt. Ik heb ook geprobeerd CHARACTER SET 'utf8' aan het statement toe te voegen, maar dat maakt niets uit.
Ik neem voor de zekerheid maar aan dat deze karakters wel utf8 karakters zijn, ik zou in ieder geval niet weten wat het anders is. Gezien de herkomst van de file mag ik er vanuit gaan dat de file verder helemaal in orde is.
Maar wat kan ik nu doen om die data in m'n tabel te krijgen?
Wat specs:
Windows Server 2008 R2
MySQL 5.1.52-community
Query browser 1.2.17
Update:
Net nog even geverifiëerd met een hex-editor, en de vier bytes zijn inderdaad geldige utf-8 bytes. Ze staan met z'n vieren voor één chinees karakter, en wel 𡎚 (als dat leesbaar is
[ Voor 6% gewijzigd door _Thanatos_ op 24-11-2010 22:54 ]
日本!🎌