
CREATE TABLE [学生] (
[学号] [int] NOT NULL ,
[姓名] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[性别] [nvarchar] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[系号] [int] NULL ,
[年龄] [int] NULL
) ON [PRIMARY]
CREATE TABLE [系表] (
[系号] [int] NOT NULL ,
[系名] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[系主任] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
ALTER TABLE [学生] ADD
CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED
(
[学号]
) ON [PRIMARY]
ALTER TABLE [系表] ADD
CONSTRAINT [PK_系表] PRIMARY KEY CLUSTERED
(
[系号]
) ON [PRIMARY]
ALTER TABLE [学生] ADD
CONSTRAINT [FK_学生_系表] FOREIGN KEY
(
[系号]
) REFERENCES [系表] (
[系号]
) ON DELETE CASCADE ON UPDATE CASCADE
一、迁移Database
Schema。
首先使用Sybase
Powerdesigner的逆向工程功能,逆向出SQL
Server数据库的物理模型。具体 *** 作是在Powerdesigner中选择“File”,“Reverse
Engine”再选择Database,将DBMS选择为SQL
Server
然后选择数据源,也就是要具体连接到的SQL
Server数据库服务器,然后选择要逆向的数据库名,比如选中“WSS_Content_80”
单击确定即可生成物理模型图,然后单击“Database”菜单下的Change
Current
DBMS修改当前的DBMS,改为MySQL
50,单击确定后即可生成MySQL的物理模型
然后单击“Database”菜单下的“Generate
接下来手工修改下生成的脚本的内容。将其中的dbo全部替换成空,将create
user这样的语句删除掉。
如果有些字符在MySQL中是关键字,那么必须使用“`”(键盘上数字1左边那个符合)符合框起来。
加上MySQL所需要的存储引擎比如每个建表语句后跟上:
ENGINE
=
INNODB
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;将生成的脚本在MySQL中去运行一次即可创建数据库。
二、迁移数据内容
数据内容只能通过生成INSERT语句的方式来做。
首先使用SSMS的“生成脚本”功能(在数据库上右键,选择“任务”“生成脚本”选项),可以为SQL
Server数据库中的数据生成插入脚本。
首先选择要迁移数据的表,这里我们全选所有的表
然后单击下一步,选择将脚本保存到新的查询窗口
单击“高级”选项,在高级选项窗口中选择“要编写脚本的数据的类型”为仅限数据
然后“确定”再下一步下一步即可生成INSERT脚本文件。
修改生成的脚本文件,主要有以下几项修改:
使用批量替换的方式去掉[
]这是SQL
Server的符合,在MySQL中不用这个。
使用批量替换的方式去掉dbo
有些单词在MySQL中是关键字的,那么需要使用“`”引起来。
关于Datetime类型的数据,需要手工修改下,SQL
Server默认生成的是这样的语句,在MySQL中是没办法解析的:
CAST(0x00009EEF00000000
AS
DateTime)
为每一行添加一个;表示一个插入语句结束。这个分号在SQL
Server中可以不需要,但是在MySQL中是必须的。简单的方法是使用高级的文本编辑器(比如Notepad++),将\r\n替换为;\r\n即可。
中国生物医学文献数服务系统(SinoMed)属于中文参考数据库。根据相关公开信息查询:中国生物医学文献数服务系统(SinoMed)是由中国医学科学院医学信息研究所/图书馆研制,2008年首次上线服务,整合了中国生物医学文献数据库(CBM)、中国生物医学引文数据库(CBMCI)、西文生物医学文献数据库(WBM)、北京协和医学院博硕学位论文库(PUMCD)等。
1、更改服务器的编码方式,在终端输入以下命令:
mysqld--character-set-server=gbk--collation-server=gbk_chinese_ci;
2、更改某个数据库的编码方式
mysql-uroot-p
alterdatabasecharactersetgbkcollategbk_chinese_ci;
3、在创建数据库时指定编码:
mysql-uroot-p
createdatabasedb_namecharactersetgbkcollategbk_chinese_ci;
4、更改某个表的编码方式
mysql-uroot-pdb_name
altertabletable_nameconvertto charachtersetgbkcollategbk_chinese_ci;
5、在创建表时指定编码方式
mysql-uroot-pdb_name
createtabletable_name()charactersetgbkcollategbk_chinese_ci;
6、更改某行的编码方式
mysql-uroot-pdb_name
altertabletable_namemodifycolumn_namevarchar(20)charactersetgbkcollategbk_chinese_ci;
7、在创建列时指定编码方式:
</pre><prename="code"class="sql">mysql-uroot-pdb_name
createtabletable_name(,col1varchar(20)charactersetgbkcollategbk_chinese_ci,)charactersetutf8collateutf8_general_ci;
利用sql语句进行修改,举例说明:
1、ALTER TABLE `test` DEFAULT CHARACTER SET utf8;该命令用于将表test的编码方式改为utf8;
2、ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 该命令用于将表test中name字段的编码方式改为utf8
数据虽然完全相同,但是的两个数据库实例的COLLATE设置不同,两者不兼容。这种情况通常出现在与临时表进行连接的时候。临时表创建在tempdb数据库里,它默认是继承了SQL Server实例的COLLATE设置。如果你的用户数据库是从另外一台服务器附加上来的话,很可能是另一中COLLATE设置。两者不兼容就会出现这种错误。
解决办法:可以在创建临时表时,为文本字段指定 COLLATE DATABASE_DEFAULT, 从而明确指定从当前用户数据库继承 COLLATE 设置。
这个错误是说明你没有权限创建数据库
在CREATE DATABASE IF NOT EXISTS `mvm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;前面加上--,把创建数据库注释掉
--CREATE DATABASE IF NOT EXISTS `mvm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同 *** 作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2 方法一 SQL脚本形式
*** 作步骤如下:
21 导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,导出SQL脚本。
211 用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
212 用mysqldump命令行
命令格式
mysqldump -u用户名 -p 数据库名 > 数据库名sql
范例:
mysqldump -uroot -p abc > abcsql
(导出数据库abc到abcsql文件)
提示输入密码时,输入该数据库用户名的密码。
22 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
23 将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。
231 用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxxsql
得到
xxxxxsqlgz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和 *** 作系统之间可能不兼容,要慎用。
31 准备原始文件
用tar打包为一个文件
32 创建空数据库
33 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydbtargz
34 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp /var/lib/mysql/mydb/
对于FreeBSD:
cp /var/db/mysql/mydb/
35 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/
chmod 660 /var/lib/mysql/mydb/
创建存储过程:
CREATE PROCEDURE [dbo][sys_viewTableSpace]
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE [dbo]#tableinfo(
表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
记录数 [int] NULL,
预留空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
使用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
索引占用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
未用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)
insert into #tableinfo(表名, 记录数, 预留空间, 使用空间, 索引占用空间, 未用空间)
exec sp_MSforeachtable "exec sp_spaceused ''"
select from #tableinfo
order by 记录数 desc
drop table #tableinfo
END
使用的时候直接 :exec sys_viewtablespace
以上就是关于数据库建表全部的内容,包括:数据库建表、如何快速将SQL数据库迁移到HANA数据库、以下哪个数据库属于中文参考数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)