Python中国社区  »  DATABASE

hello,MySQL—odbcload读取MySQL数据

爬虫俱乐部 • 3 月前 • 83 次点击  

有问题,不要怕!点击推文底部阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

好消息:爬虫俱乐部即将推出研究助理供需平台,如果您需要招聘研究助理(Research Assistant or Research Associate),可以将您的需求通过我们的公众号发布;如果您想成为一个RA,可以将您的简历发给我们,进入我们的研究助理数据库。帮我们写优质的推文可以提升您被知名教授雇用的胜算呀!


在上一篇推文中,我们用了比较详细的篇幅讲述了如何配置MySQL的odbc驱动,odbc驱动起到的是桥接作用,它是MySQLStata的通信渠道,三者的关系具体见下图。

事实上凡是当前主流的数据库,如oracle、MySQL、SQL Server都存在相应的odbc驱动,所以都可以与Stata进行连接交互,其原理是一样的。而在数据库的江湖中,占据天下大半的都是关系型数据库,如Oracle、MySQL、SQL Server,它们使用大体相同的SQL语言进行数据处理,因此只要明白了Stata与MySQL如何交互,Stata与其它数据库的交互方法也就一通百通了。

从本篇文章开始,我们将逐一介绍在Stata中操作数据库的常用语法与命令,快快与小编一起学。

数据库选择

 为了方便大家对照推文操作,我们创立一个新的odbc连接,连接MySQL初始化后自带的数据库mysql,之后我们推文的所有操作都是对该数据库的,只要大家安装完毕MySQL,即能对照本系列推文操作。

        创立odbc连接的方法详见上一篇推文,我们创立的odbc连接名为Stata_MySQL

小试牛刀:在Stata中查看数据库情况

完成了上一篇推文的设置后,打开Stata,在命令行内输入odbc list查看当前有哪些可用的odbc驱动实例

         可以看到,之前小编添加的名称为Stata_MySQL实例已经添加成功并被查找到。

  那么我们继续输入命令odbc query "Stata_MySQL"用来查看在实例Stata_MySQL中有哪些表。

        可以看到,我们的实例所连接的数据库mysql内的所有表名称已经被读取出来。这说明,我们Stata已经可以自由调取该数据库内的内容。

         tips:什么是“表”?表是关系型数据库中的一个特定术语,用以记录一组有相同变量的数据。就像Stata的数据集一样。一个MySQL数据库中可以包含多张表。

odbc des

 使用odbc des 可以查看某个表单内的基本情况,其语法为

         odbc describe ["TableName" , connect_options]

 在这里,我们查看Stata_MySQL中的表proc的基本情况,如这个数据集有多少个变量,变量类型是什么,输入语句

 odbc des "proc" , dsn("Stata_MySQL")

        可以看到,Stata向我们报告了DataSource为Stata_MySQL,Table为proc然后是该表内的变量及其类型。

         我们还可以发现,在DataSourceTable右侧还有query与load便捷命令,您可以点击它们来查询该数据库内有哪些表及加载该表。

odbc load

         该命令用于加载某个指定表中的数据,最通用的方法是直接在exec选项中写入SQL语句来载入。如我们想要加载proc中的所有数据,就直接在exec()选项中写入SQL语句SELECT * FROM proc如下

odbc load, exec(`"SELECT * FROM proc"') dsn("Stata_MySQL")

list in 1/5

同时Stata也提供了一个傻瓜式读入方式。

odbcload,table(proc) dsn("Stata_MySQL") noq

         这里只需要指定tabledsn,并且加上一个参数noq,即可将该表内的所有数据都加载下来。如果你需要对变量进行一些改动,同样可以这样写

       odbc load NAME = name created in 1/6 ,table(proc) dsn("Stata_MySQL") noq clear

       在这里我们只载入两个变量namecreated,对name变量重命名为NAME并只取1-5条数据。

tips:名为mysql的数据库内包含的是系统配置的相关信息,我们可以使用root账户浏览,这是安全的,也可以对其直接修改,但是强烈不推荐你这样做,除非你完全清楚你在做什么。

更多参数

      1. noquote(noq)将自动消除表名称带来的字符串引号,对于SQL语句来说,表名是不用也不能加上双引号的,例如

SELECT * FROM table1;在MySQL中是正确语句,可以查询出来,但是

SELECT * FROM "table1";是非法语句,查询失败

        而在Stata中使用odbc load,table(proc) dsn("Stata_MySQL")语句加载数据时,Stata会自动为table(proc)选项中的表名加上引号,导致最后转化出来的语句非法,为了避免这种情况,只要是使用odbc load,table(tablename) dsn("db_name")语句时,一定要加入noq选项来取消table(proc)中的引号,避免出错。

        2.lowercase(low)将数据库表变量中的大写字母全部改为小写。这确实是很有用的一个选项,因为许多数据库的变量名统一用大写字母表示。

        3.sqlshow(sql)将展示你的每一条odbc命令操作最后被转化为的SQL语句的样子,如我们使用odbc load导入数据时

odbcload ,table(proc) dsn("Stata_MySQL") noq clear sql

得到结果如下:

        是的,虽然我们输入了一条Stata命令,但后台将其最后转化为了相应的SQL语句,那么如果我们去掉noq选项后呢?

odbcload ,table(proc) dsn("Stata_MySQL") clear sql

         这下我们彻底明白了为什么必须要加noq参数,因为带有双引号的表名在SQL语句中是非法的。


注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~


文字编辑:赵宇亮

技术总编:刘贝贝


全心全意为人民服务

坚持为同学排忧解难

往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/9HeFGFFGSW
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/8599
 
83 次点击  
分享到微博