我有一个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 );
答案 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文件中保存的数据相同的字符集。
答案 3 :(得分:-1)
这个顺序对我有用。
答案 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;