matlab怎么导入mysql数据库中的部分数据?
关注:256 答案:2 mip版
解决时间 2021-01-28 16:01
提问者祇為焄菂兲哋閤
2021-01-27 18:20
我数据库里面有目录下有700多万条数据,我只想要200条左右就可以了,怎么办?我直接点import的话它会把700多万条数据全都导进来,然后我电脑就死机了!坐等啊!
最佳答案
二级知识专家魔法小仙子
2021-01-27 19:08
mysql和sqlserver存在语法差异,直接导sql是不行的,不过可以通过sqlserver的bcp命令把 表里的数据导成指定格式的txt文件,比如列之间用逗号分割,行之间用\n\r分割 这样的数据,mysql 就可以通过 load data infile命令来导入到库里 因为sqlserver 不熟悉,所以bcp命令需要你自己研究下, mysql的 load data语法你可以参考: load data infile '/tmp/result.text' into table test_table fields terminated by ',' lines terminated by '\n' ; 意思是字段之间用逗号分割,行之间用\n分割,数据文件是result.text
全部回答
1楼花落浅殇
2021-01-27 20:30
首先要安装mysql驱动程序包
step 1: 将mysql-connector-java-5.1.7-bin.jar文件拷贝到......\matlab\r2009a\java\jar\toolbox
step 2: 到......\matlab\r2009a\toolbox\local目录下,找到classpath.txt文件,打开,并添加用来加载mysql的jdbc驱动语句:
$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.7-bin.jar
step 3:重新打开matlab即可
驱动程序安装成功后,接来下要是matlab连接mysql数据库的代码:
conn =database('databasename','username','password','driver','databaseurl')
连接成功后,返回连接对象。
参数如下:
*databasename: 数据库名称.
*driver: jdbc driver.
*username and password: 用户名和密码.
*databaseurl: 类似于jdbc:subprotocol:subname. subprotocol 是数据库类型,
subname 类似于//hostname:port/databasename.
如果matlab和数据库建立了连接,将返回类似于如下信息:
instance: 'sampledb'
username: ''
driver: []
url: []
constructor: [1x1 com.mathworks.toolbox.database.databaseconnect]
message: []
handle: [1x1 sun.jdbc.odbc.jdbcodbcconnection]
timeout: 0
autocommit: 'off'
type: 'database object'
连接mysql的代码如下:
conn = database('tissueppi','root','root','com.mysql.jdbc.driver','jdbc:mysql://localhost:3306/tissueppi');
连接成功后,就可以用exec函数执行sql语句
exec函数执行sql语句并返回一个开指针
语法如下:
curs = exec(conn,'sqlquery')
例如:curs = exec(conn, 'select * from customers')
执行完查询后,还要将查询结果从开放cursor对象导入到对象curs中,该功能是用
cursor.fetch函数实现的。
语法如下:
curs = fetch(curs)
使用curs.data来显示数据,curs.data返回一个cell结构,可以先把cell结构转换成
matrix结构再取值:
cur =cell2mat(cur)
a=cur(1,1);
则查询结果就加到了向量a中
注意:
在exec函数执行查询过程中,有的sql语句要输入变量,这时可使用strcat函数完成该
功能。
t = strcat(s1, s2, s3, ...)
for(t=1:10)
sql1 = strcat('select count(did) from rss_genepairs_u where gocc>=',num2str(t),' || gomf >= ',num2str(t),' || gobp >= ',num2str(t));
end
完整代码如下:
conn = database('tissueppi','root','root','com.mysql.jdbc.driver','jdbc:mysql://localhost:3306/tissueppi');
for t=0.5:0.01:0.91
for x=0.5:0.1:11
sql = strcat('select count(did) from rss_genepairs_x2 where score <=',num2str(x),' and did in(select did from rss_genepairs_u where gocc >=',num2str(t),' || gomf >= ',num2str(t),' || gobp >= ',num2str(t),')');
atemp = exec(conn,sql);
atemp = fetch(atemp);
a = atemp.data;
a = cell2mat(a);
a= a(1,1);
end
end
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
→点此我要举报以上信息!←
推荐资讯
大家都在看