EXcel与MySQL之间的数据迁移

参考:

1. 将Excel中数据迁移到MySQL中

  1. 将Excel转化为CSV格式,记住保存的路径和文件名最好别出现中文,删除属性名,仅保留数据即可。之后用Sublime Text3打开,在file选项中有set file encoding to 选择UTF-8
  2. 更改Mysql编码
    我们要把utf8编码格式的文件导入到mysql中,因此需要设置mysql字符集为utf8.
    进入mysql,查看mysql当前字符集:
    show variables like 'char%';
    必须确保以下五项均为utf8.
    character_set_client
    character_set_connection
    character_set_database
    character_set_results
    character_set_server
    如果其中有一项不是,需要修改/etc/mysql/my.cnf文件。
    首先停止mysql,然后打开my.cnf文件。
    在[mysqld]标签下添加character_set_server=utf8和init_connect=’SET NAMES utf8′
    然后保存退出,重启mysql,如果没有变化可以重启机器。
    这一步骤,我的没有问题,没有修改,正确性待考证。
  3. 在MySQL创建表格,表格的属性与EXcel中保持一致。
create table consume(
    studentId char(10) not null,   #10为数字的号码串
    cardId   char(6),                    #6为数字的号码串
    address varchar(40),            #不定号码串,显示中文地址
    Jdatetime datetime,              # 显示日期和时间
    money  int                             #显示消费金额
    );
  1. 导入数据测试,将CSV中所有数据复制两条到新文件consume.CSV中,执行
    load data local infile 'E:\\Desktop\\paper\\consume.CSV' into table consume fields terminated by ',' lines terminated by '\n';
    显示其他结果均正常,只有时间显示格式为:0000-00-00 00:00:00
    时间导入失败
  2. 解决时间导入失败问题
    重新建立表格,设置时间格式为varchar(30),重新生成表格和导入数据,显示结果正确,接着将字符串格式转化为时间格式
    ALTER TABLE consume MODIFY COLUMN Jdatetime datetime;
    结果仍然错误。原因:给出的时间格式为:11/4/2014 13:39:00,SQL需要的时间格式为:2014-11-04 13:39:00
  3. 从Excel表格解决问题:分列
    将日期和时间分成两列,日期格式为M/D/Y,时间格式设为文本即可。
    这样分成两列,然后修改日期列的类型为自定义:yyyy-mm-dd,这就再转化为CSV即可,此时一行的数据形式如下:1111111111 ,159777,良乡第二食堂三层 ,2014-11-02,15:04:57,-1400
  4. 从重新建立表格,导入数据即可,没问题了。

2. 将数据从MySQL导出到Excel中

  1. 使用命令:select * into outfile "E:\\test.txt" from consume;
    显示错误:Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 0.000 sec
  2. 解决办法:使用代码:show variables like '%secure%';
    找到secure_file_priv的值C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\
    把这个路径作为保存路径:select * into outfile "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\test.txt" from consume;这样就生成了txt文档
  3. 新建excel,选择数据来自于文本即可,设置一下,即可导入。

3. 使用Python将Excel中的数据导入到MySQL

使用pymysql和openpyxl两个库,具体代码如下:

import pymysql
from openpyxl import load_workbook

wb = load_workbook('E:\\Desktop\\paper\\data_deal\\2014-11-12.xlsx')
sheet = wb.active
conn = pymysql.connect(
  user="root",
  password="******",
  port=3306,
  host="127.0.0.1",   # 本地数据库  等同于localhost
  db="student",       # 数据库名
  charset="utf8"
)
cur = conn.cursor()      # 获取对应的操作游标
query = 'insert into consume (studentId, cardId, address, Jdate, Jtime, money) values (%s, %s, %s, %s, %s, %s)'
for i in range(1, sheet.max_row+1):
    studentId = (sheet.cell(row=i, column=1)).value
    cardId = (sheet.cell(row=i, column=2)).value
    address = (sheet.cell(row=i, column=3)).value
    Jdate = (sheet.cell(row=i, column=4)).value
    Jtime = (sheet.cell(row=i, column=5)).value
    money = (sheet.cell(row=i, column=6)).value
    values = (studentId, cardId, address, Jdate, Jtime, money)
    # 执行sql语句
    cur.execute(query, values)
cur.close()
conn.commit()
conn.close()
print(sheet.max_row, "行数据导入结束")

4. 将excel文件中的数据导入到mysql

原文

在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:
1)增加一列(假设是D列)
2)在第一行的D列,就是D1中输入公式:
=CONCATENATE("insert into tablename (col1,col2,col3) values (",A1,",",B1,",",C1,");")
3)此时D1已经生成了如下的sql语句:
insert into table (col1,col2,col3) values ('a','11','33');
4)将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)
5)此时D列已经生成了所有的sql语句
6)把D列复制到一个纯文本文件中,假设为sql.txt
把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容