文件大小:CSV 与 MySQL

use*_*030 5 mysql sql csv filesize

我正在尝试优化 3GB CSV 文件的 MySQL 表结构。到目前为止,我已经成功导入了 1900 万行以上的 60%,MySQL 表大小为 5.5GB。如何优化表结构以减少数据库表的大小?(因为我的磁盘空间不足!)

CSV 文件中的示例行是

"{0C7ADEF5-878D-4066-B785-0000003ED74A}","163000","2003-02-21 00:00","UB5 4PJ","T","N","F","106","","READING ROAD","NORTHOLT","NORTHOLT","EALING","GREATER LONDON","A"
Run Code Online (Sandbox Code Playgroud)

...我的数据库结构是:

(
`transaction_id` int(10) unsigned NOT NULL,
  `reference` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `price` int(10) unsigned NOT NULL,
  `sale_date` date COLLATE utf32_unicode_ci NOT NULL,
  `postcode` varchar(8) COLLATE utf32_unicode_ci NOT NULL,
  `type` varchar(1) COLLATE utf32_unicode_ci NOT NULL,
  `new_build` varchar(1) COLLATE utf32_unicode_ci NOT NULL,
  `tenure` varchar(1) COLLATE utf32_unicode_ci NOT NULL,
  `property_number` varchar(10) COLLATE utf32_unicode_ci NOT NULL,
  `property_name` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `street` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `area` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `city` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `county1` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `county2` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
  `unknown` varchar(1) COLLATE utf32_unicode_ci NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

Bjo*_*ern 0

两个建议:

(1) 您的领域

您可能会询问 MySQL 本身有关您的数据的情况!尝试

SELECT * FROM yourtable PROCEDURE ANALYSE;
Run Code Online (Sandbox Code Playgroud)

并查看结果。

(2) 你的字符集

你正在使用utf32. 如果由于表/应用程序的其他部分而您并不真正需要它,请改为使用utf8