----------------------------------------------------------------------------------------------------
先安装mysql
代码:
sudo apt-get install mysql-server mysql-client
再装开发包
代码:
sudo apt-get install libmysqlclient15-dev
------------------------------------------------------------------------------------------------------
安装完以后,C代码里添加头文件
代码:
#include
编译方法:
代码:
gcc $(mysql_config --cflags) xxx.c -o xxx $(mysql_config --libs)
可以用以下代码测试一下
代码:
/* Simple C program that connects to MySQL Database server*/
#include
#include
main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = ""; /* 此处改成你的密码 */
char *database = "mysql";
conn = mysql_init(NULL);
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
/* send SQL query */
if (mysql_query(conn, "show tables")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[0]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
}
========================================================================
查看的命令 mysql -uroot -p123 --version 可以看到当前使用的版本,
因为以前我演示的 root 密码是空密码,所以刚才有些错误。。要输入密码。
下面登陆 进去 mysql
# mysql -uroot -p123456
先创建一个数据库 realtime_database
> create database realtime_database;
> use realtime_database;
> source /opt/data 20111125 1732.sql
> show tables;
创建一个user表。
> create table user
(
id int unsigned auto_increment not null primary key,
name varchar( 25 )
);
创建另外一个admin表。
> create table admin
(
id int unsigned auto_increment not null primary key,
name varchar( 25 )
);
然后 在 user表 插入一条记录。
> insert into user(name) values( 'jame' );
===================================================
上面都是为了下面的演示 也创建的临时数据,呵呵。
下面进行有关数据的导入
例如 我现在有个文本文件 格式如下 /opt/user.txt
2 kelly
这个文件要导入到 user 表中去。
mysql> select * from user;
+----+------+
| id | name |
+----+------+
| 1 | jame |
+----+------+
现在开始导入
mysql> load data infile '/opt/user.txt' into table user;
再次查询就发现成功 导入到数据表了。
mysql> select * from user;
+----+-------+
| id | name |
+----+-------+
| 1 | jame |
| 2 | kelly |
+----+-------+
另外的一种导入方式,
我们先修改一下 刚才的 /opt/user.txt 文件
3 Ken
然后使用下面命令进行导入
# mysqlimport -uroot -p123 cnetsa /opt/user.txt
cnetsa.user: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
进入数据库查看是否 成功:
mysql> select * from user;
+----+-------+
| id | name |
+----+-------+
| 1 | jame |
| 2 | kelly |
| 3 | Ken |
+----+-------+
==============================================
好了,现在讲一下如何备份数据库和数据表
将数据库 cnetsa 全部数据表 备份到 /opt/cnetsa_2009_5_29.sql 文本文件中
# mysqldump -uroot -p123 --opt cnetsa > /opt/cnetsa_2009_5_29.sql
可以进行查看 cat /opt/cnetsa_2009_5_29.sql
----------------
如果你想只备份 数据库中的一张表呢 ?
例如 cnetsa 这个数据库的 user 表
# mysqldump -uroot -p123 --opt cnetsa user > /opt/cnetsa_user_2009_5_29.sql
---------------
或者想同时备份 多个数据库,而不需要一个个备份。
# mysqldump -uroot -p123 --databases cnetsa test > /opt/test_cnetsa_user_2009_5_29.sql
===============================================
做好了备份, 哪么如何恢复数据库 ?
下面按照 上面的顺序,来演示一下 恢复数据库。
恢复数据库
先删掉原来的数据库,
> drop database cnetsa;
> create database cnetsa;
> use cnetsa;
> show tables;
可以看到没有任何表
下面进行恢复
> source /opt/data 20111125 1732.sql
> show tables; 原来的数据表得到了恢复。
----------------------
下面演示恢复数据库中的其中一张表
先删掉一张表
> drop table user;
> show tables;
下面进行恢复表
> source /opt/cnetsa_user_2009_5_29.sql;
> show tables;
前后对比 show tables 可以看到 user 表得到了恢复。。。
--------------------
一次恢复多个数据库
下面先把 cnetsa 和 test 数据库 进行删除
> drop database cnetsa;
> drop database test;
> show databases;
下面进行恢复
> source /opt/test_cnetsa_2009_5_29.sql
是这个名字。我们刚才备份的名字
/opt/test_cnetsa_user_2009_5_29.sql
> source /opt/test_cnetsa_user_2009_5_29.sql
> show databases;
刚才删掉的数据库又回来了,呵呵
============================================
数据备份后结果:
mysql> show tables;
+-----------------------------+
| Tables_in_realtime_database |
+-----------------------------+
| history_info |
| pointinfo_setting |
| realtime_info |
+-----------------------------+
3 rows in set (0.00 sec)
mysql> select * from history_info limit 5;
+----+---------+------+------------------+--------------------+
| ID | PointID | Type | Value | Time |
+----+---------+------+------------------+--------------------+
| 1 | 1 | 0 | 3 | 634575672174062500 |
| 2 | 2 | 1 | 111 | 634575672174062500 |
| 3 | 3 | 2 | 382 | 634575672174062500 |
| 4 | 4 | 3 | 17.8146228790283 | 634575672174062500 |
| 5 | 5 | 4 | 11.0342330106453 | 634575672174062500 |
+----+---------+------+------------------+--------------------+
5 rows in set (0.00 sec)
Rows in history_info:
1 1 0 3 634575672174062500
2 2 1 111 634575672174062500
3 3 2 382 634575672174062500
4 4 3 17.8146228790283 634575672174062500
5 5 4 11.0342330106453 634575672174062500