参考文章:
在linux中将excel表格数据导入Mysql数据库(含中文数据) - 简书 (jianshu.com)
Excel一个工作簿中多个工作表拆分成多个独立的工作簿! - 知乎 (zhihu.com)
拆分excel中的多个表
打开excel-----文件------选项------自定义功能区-------勾选开发工具------回到excel首页点击开发工具------点击visual Basic------点击插入-----模块-----粘贴代码放入模块中------点击运行。
Private Sub 分拆工作表()
Dim sht As Worksheet
Dim MyBook As Workbook
Set MyBook = ActiveWorkbook
For Each sht In MyBook.Sheets
sht.Copy
ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sht.Name, FileFormat:=xlNormal '将工作簿另存为EXCEL默认格式
ActiveWorkbook.Close
Next
MsgBox "文件已经被分拆完毕!"
End Sub
将拆分完的表送到Linux存储导入mysql表。
1、将拆分完的表以csv格式另存,在导出时格式选择CSV UTF-8(逗号分隔)*.csv。
2、把csv格式的表直接复制到Linux虚拟机的桌面。
3、通过Linux命令把桌面的csv文件存储到/var/lib/mysql-files(其中MySQL替换为为你的用户主名,BookInfo.csv替换为你的csv文件名)。
mv /home/MySQL/Desktop/BookInfo.csv /var/lib/mysql-files/
4、通过Linux命令更改csv文件的权限,添加可读权限。
chmod 644 /var/lib/mysql-files/BookInfo.csv
5、设置mysql字符集为utf8。
查看mysql当前字符集
show variables like 'char%';
以下5项都要为utf8
character_set_client #为客户端编码方式
character_set_connection #为建立连接使用的编码
character_set_database #数据库的编码
character_set_results #结果集的编码
character_set_server #数据库服务器的编码
如果有一项不是utf8,则修改文件/etc/mysql/my.cnf文件
停止mysql运行
service mysqld start(stop) #为启动和停止服务器
找到[mysqld],在下面 添加:
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
或者,找到[mysql]和[client],分别在下面添加:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
修改好后,重新启动mysql :service mysqld restart
,重新查询数据库编码可发现编码方式的改变。
6、根据csv文件的表结构建表(记住设置表的字符集为utf8)。
CREATE TABLE BookInfo (
ID INT PRIMARY KEY,
ProductID BIGINT NOT NULL UNIQUE,
BookName VARCHAR(100) NOT NULL,
ProductType VARCHAR(100) NOT NULL,
Price FLOAT NOT NULL,
Publisher INT NOT NULL,
ISBN VARCHAR(20) NOT NULL UNIQUE,
Writer VARCHAR(20),
Edition INT,
Format VARCHAR(10),
PublishTime VARCHAR(20),
FOREIGN KEY (ProductType) REFERENCES ProductType(TypeID),
FOREIGN KEY (Publisher) REFERENCES PublisherInfo(PublisherID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
7、导入csv文件的数据(如果csv文件的第一行是列名,则用ignore 1 rows命令跳过csv文件第一行)
LOAD DATA INFILE '/var/lib/mysql-files/BookInfo.csv'
INTO TABLE BookInfo
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;