第6天-sql简单数据实操
来源:互联网 发布:jquery怎么渲染数据 编辑:程序博客网 时间:2024/06/05 10:46
为了练习数据库操作,可以使用python3随机生成一个数据表导入mysql中,具体过程如下:
一、创建表
新建一个名为createtable.sql的脚本,内容如下:
create table students(id int unsigned not null primary key,name char(8) not null,sex char(6) not null,age tinyint unsigned not null,score tinyint unsigned not null);
进入mysql,使用
source createtable.sql;
执行脚本创建数据表。
二、pandas生成数据
import pandas as pdimport numpy as npstudents = pd.DataFrame(columns=['name','sex','age','score'],index= np.arange(1000));students.index.name='id'sex = np.array(['male','female'])students.sex = sex[np.random.randint(0,2,1000)]students.score = np.random.randint(0,101,1000)students.age = np.random.randint(0,101,1000)letters = list(map(chr,range(ord('a'),ord('z')+1)))#能否找到更好的方式letters = np.array(letters)name = []for i in range(1000): name.append(''.join(letters[np.random.randint(0,26,8)]))students.name = namestudents.to_csv('data.csv',header=False)
以上代码可以生成一个这样的数据表:
其中有几个细节:
- 这里的’id’是使用index的name属性赋值的
- to_csv方法写入csv文件时会将索引列一同写入,即这里的id一列
- to_csv方法会将列名一同写入,使用header=false参数可以避免
三、将csv导入mysql
使用如下语句:
load data infile '/home/zeta/sql/data.csv' into table students fields terminated by ','optionally enclosed by '"' escaped by '"' lines terminated by '\n';
注意文件路径。
使用普通用户执行以上命令时遇到问题:
ERROR 1045 (28000): Access denied for user 'zeta'@'%' (using password: YES)
提示权限不足,但是之前已经赋予此用户数此数据库的所有权限,网上搜了半天没有解决这个问题,最后直接使用了root用户导入数据。
四、经验
1、auto_increment
使用auto_increment的主键在删除数据后仍会存在。
例如id是一个主键,属性为整数,即使用以下语句创建:
id int unsigned not null auto_increment primary key
若之前插入过10条数据,主键增到10。
将这10条数据删掉后,按常理主键会随之更新状态,但事实上此时1~10仍被占用,不能再用作主键,插入id为1~10的数据会失败。
2、子句顺序
order by 必须是最后一个子句。
3、复制表
在sql中可以直接从旧表复制出新表,例如将students复制为dump,操作为:
create dump select * from students
当然由如上的语法可以发现,可以使用高级过滤语句从而仅从旧表中复制出部分内容。
后续的联系可以使用dump表,若损坏重新复制一个即可。
注意复制出的表将失去主键信息。
0 0
- 第6天-sql简单数据实操
- spark读取hive表数据实操
- MySQL数据库(五)_VS中实现插入MySQL数据实操
- javascript计算一年的第多少周,还有每周的星期几是几月几号 (方法,据实际情况调整)
- 第13章 文 件 操 作
- 网络营销大数据实操七步走
- jsp+servlet+mysql 简单登录操数据库
- 第6章 函 数
- ABAP模块-SQL取数优化第一篇
- 【微营销】第12天 微营销实战技巧之准备微博号和微信号的具体实操
- SQL Server数据库还原的SQL语句及操
- SQL计算秒数的一个简单方法
- 第12周项目2 操作用邻接表存储
- 简单易学又有效的颈椎病自我康复操
- 简单的五子棋操作用两种方法实现
- MySQL导入与导出.sql文件实操
- 基于php+mysql的sql注入攻防实操
- Oracle10g以DBA身份来登陆SQL*Plus实操
- 软件工程
- HDU 2896 病毒侵袭(AC自动机)
- 选择排序、插入排序、冒泡排序【O(n^2)】
- [ArrayList]——逻辑梳理
- [leetcode 216] Combination Sum III ------组合数的和(回溯法)
- 第6天-sql简单数据实操
- struts自定义类型转换器,局部和全局
- 且听风吟
- [BZOJ2818] gcd - 欧拉函数+筛法
- Class [org.springframework.transaction.config.TxNamespaceHandler] for namespace
- Spring的AOP自动代理(含AspectJ的AOP开发)
- 求一个数组中的第二大的数?
- Matlab中的im2col函数
- Excel 解压后 结构