MySQL 如何在 tsv 文件中导入不同的字符集
MySQL how to import different charsets in tsv file
我有一个包含 130 万行的 tsv 文件,其中包含不同的字符集,例如拉丁文、俄文、中文等
这是我的table结构
CREATE TABLE `zip_test` (
`country_code` VARCHAR(2) NULL DEFAULT NULL,
`postal_code` VARCHAR(20) NULL DEFAULT NULL,
`place_name` VARCHAR(180) NULL DEFAULT NULL,
`id` INT(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=160467
;
通过运行命令行中的这个,我成功地看到了俄语字符,但其他字符仍然无法正确显示。
mysql -uUser -pPass --default-character-set=utf8 --local-infile database -e "LOAD DATA LOCAL INFILE 'file.tsv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"
我该如何解决这个问题?我做错了什么?我以前从未使用过与拉丁语不同的东西。
嗯,我做错了几件事。
这篇文章澄清了很多事情
https://mathiasbynens.be/notes/mysql-utf8mb4
我必须运行准备我的数据库
# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
而且我的命令行需要更正为:
mysql -uUser -pPass --default-character-set=utf8mb4 --local-infile database -e "LOAD DATA LOCAL INFILE 'file.tsv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"
我有一个包含 130 万行的 tsv 文件,其中包含不同的字符集,例如拉丁文、俄文、中文等
这是我的table结构
CREATE TABLE `zip_test` (
`country_code` VARCHAR(2) NULL DEFAULT NULL,
`postal_code` VARCHAR(20) NULL DEFAULT NULL,
`place_name` VARCHAR(180) NULL DEFAULT NULL,
`id` INT(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=160467
;
通过运行命令行中的这个,我成功地看到了俄语字符,但其他字符仍然无法正确显示。
mysql -uUser -pPass --default-character-set=utf8 --local-infile database -e "LOAD DATA LOCAL INFILE 'file.tsv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"
我该如何解决这个问题?我做错了什么?我以前从未使用过与拉丁语不同的东西。
嗯,我做错了几件事。
这篇文章澄清了很多事情 https://mathiasbynens.be/notes/mysql-utf8mb4
我必须运行准备我的数据库
# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
而且我的命令行需要更正为:
mysql -uUser -pPass --default-character-set=utf8mb4 --local-infile database -e "LOAD DATA LOCAL INFILE 'file.tsv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"