如何将带有重音字符的CSV文件导入MySQL

时间:2011-07-14 03:24:34

标签: mysql csv import

我有一个300,000行的file.csv。许多行是带有重音字符的外国城市的名称。当我尝试在mysql中导入时,我会在字段上收到警告,并在特殊字符处截断字段。

    LOAD DATA LOCAL INFILE '/var/tmp/geoip/location.csv' INTO TABLE Geolocation2 FIELDS TERMINATED BY ',' enclosed by '"' LINES TERMINATED BY '\n' (id, country, region, city, postalCode, latitude, longitude, metrocode, areacode );

5 个答案:

答案 0 :(得分:1)

我在使用MS Excel创建的CSV文件时出现此问题。如果您使用的是Excel,或者需要将CSV文件转换为UTF-8以便导入MySQL,则答案here可能会有所帮助。

答案 1 :(得分:1)

使用UTF-8编码打开并保存所有SQL查询和数据文件

这将解决BULK INSERT问题 使用选项WITH(DATAFILETYPE =' widenative')

它还将解决INSERT INTO问题,无论数据是与CREATE TABLE指令在同一个文件中还是链接在一起:r" X:\ Path \ InsertIntoMyTable.sql"

答案 2 :(得分:0)

您需要将连接,数据库,表格和列编码设置为与CSV文件中保存的数据相同的字符集。

http://dev.mysql.com/doc/refman/5.0/en/charset.html

答案 3 :(得分:-1)

这个顺序对我有用。

  • create database {$ databasename} DEFAULT CHARACTER SET latin1;
  • ALTER DATABASE {$ databasename} DEFAULT CHARACTER SET latin1 DEFAULT COLLATE latin1_swedish_ci;
  • charset latin1;
  • 将数据infile'{$ file.csv}'加载到表{$ tablename}字符集latin1字段以'|'结尾由“\ n”;
  • 终止的“”行括起来

答案 4 :(得分:-1)

告诉MySQL导入时源文件的代码页是什么。例如要使用代码页Windows-1252导入文件,请使用MySQL代码页latin1(这是相同的),如下所示:

LOAD DATA LOCAL INFILE '/path/to/file.csv'
  INTO TABLE imported_table
  CHARACTER SET 'latin1'
  COLUMNS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"'
  ESCAPED BY '"'
  LINES TERMINATED BY '\r\n'
  IGNORE 1 LINES;