SQL Server 获取符合条件的数据并导出建表语句和插入语句

一、提取原数据库表中需要的信息

将原数据库中表 origin_table 的指定信息复制到新表 new_table 中

SELECT * INTO new_table FROM origin_table WHERE 条件 = ?

原数据中没有此表(new_table),将会新建new_table表,并将符合条件的数据根据表结构插入到新表中

注意:无需提前把目标表(new_table)建好,会自动按照数据源、字段类型建立对应目标表。

 

INSERT INTO bak_table SELECT * FROM origin_table WHERE 列名 = '?'   插入一行,要求表bak_table 必须存在,并向表bak_table 中追加数据时需要使用INSERT INTO 语句。

 

二、提取所需要的数据后,使用任务——生成脚本将数据新表(new_table)数据导出生成为sql语句

SQL Server导出建表语句和插入语句,包括当前数据库中已有的数据信息

1、找到要进行操作的表所在的数据库,右键-->任务-->生成脚本

SQLServer 2008快速导出建表语句和插入语句

 

2、首页是简介,可直接点击下一步

SQLServer 2008快速导出建表语句和插入语句

 

3、第二页是选择要生成脚本的对象,若只需要生成数据库中某一个对象的脚本,则勾选“选择特定数据库对象”,然后勾选自己需要用到的表,点击下一步

SQLServer 2008快速导出建表语句和插入语句

 

4、第三页设置脚本编写的选项:

(1) 图一:默认输出类型为特定文件,可以指定自己的脚本路径进行保存,默认勾选覆盖现有文件,则生成的脚本会覆盖原有的内容,可根据实际场景进行勾选。

SQLServer 2008快速导出建表语句和插入语句

(2) 点击图一中“高级”按钮,进入图二界面,“常规”-->"要编写脚本的数据的类型"-->仅限架构则只生成建表脚本,架构和数据则生成建表脚本和插入语句的脚本,此处根据需要进行设置。

  • 仅限架构:仅生成表结构脚本
  • 架构数据:即生成表结构脚本,也生成Insert 插入数据语句脚本
  • 仅限数据:仅生成Insert 插入数据语句脚本

确定选项后,点击下一步,第四页直接点击下一步即可。

SQLServer 2008快速导出建表语句和插入语句

 

5、操作成功的页面:会提示脚本保存成功,点击完成。

SQLServer 2008快速导出建表语句和插入语句

 

6、进入生成脚本时我们配置的路径可找到script.sql文件或自己命名的 .sql文件,使用SQLServer工具打开后可看到我们需要的建表脚本以及insert 语句。

SQLServer 2008快速导出建表语句和插入语句

 

三、将导出的sql语句文件执行,并将语句插入到指定数据库中

执行插入数据库插入数据时报错: IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显示值。

sqlserver 批量插入记录时,对有标识列的字段要设置 SET IDENTITY_INSERT 表名 ON,然后再执行插入记录操作;插入完毕后恢复为 OFF 设置。


 

四、UNICODE 和 ANSI的区别

DBCS是亚洲的字符集,包含了ANSIANSI也就是ASCII值为0-255之间的字符,当字符为ANSI时,存放于文件中占用的是一个字节。如果是非ANSI的呢,则占用两字节。用VB的ASC函数可以很容易得到一个字符的DBCS值(或是说ANSI值吧)

假如一个字符得到的DBCS值为&H1234,当然,这个值是转换成了十六进制的,因为对于磁盘存放来说,一般使用位(BIT),即二进制存放,而显示字节呢用十六进制显示则非常直观。存放在文件中即"12 34"(这是用十六进制文本编辑器中查看到的形式)

UNICODE是世界性的字符集,几乎包含了世界上的所有字符,每个字符都有一个单一的UNICODE值。UNICODE值也是占用两个字节的。但不同的是它虽然也包含了标准的ANSI字符值,但是ANSI字符只占用一个字节,UNICODE会自动在ANSI值后加入一个值为0的字节。比如说一个 ANSI值为&h45的字符,以UNICODE形式存放则为"45 00"。至于如何用VB得到一个字符的UNICODE值,ASCW函数可以轻松搞定。但是普通的非ANSI字符以UNICODE形式时则是从右存到左的。比如一个值为&H1234的字符,存为UNICODE时则为"34 12"。

UNICODE的意义在于能让不同环境下的操作系统识别。比如说吧,你在中文的操作系统下使用记事本写了一篇文本文章。但你要拿到别的环境下的WIN2K(之所以选WIN2K,是因为WIN2K支持UNICODE,否则用WIN98只能用外接中文平台才能查看)下查看(比如美国的电脑,操作系统为英文,e799bee5baa6e997aee7ad94e4b893e5b19e31333363393564代码页也是美国(WIN2K有设置代码页)),即使该电脑已经安装了中文字体,即使用WORD这样的编辑软件打开也肯定是乱码一堆。这是为什么呢?因为英文的WIN2K操作系统只能识别UNICODE呀!并不能识别咱们亚洲的DBCS码呀!

解决方法只要你把它转换为UNICODE码存放就OK了!像Utrla Edit就能转换。WIN2K里也有代码转换器可以,而WIN2K下的记事本则可以用另chun为UNICODE码。如果你使用的是WIN9X,则可以自己用VB解决了。UNICODE码存放的文本文件与普通的文本文件不同之处仅仅是文件头加了"FF FE"而已。其他的则是代码值不同。只要转换了字符的代码,并在文件前加上"FF FE"这两个字节,就是把这篇中文文章保存为UNICODE格式了!转换成UNICODE格式后,英文操作系统的机器只要用WORD打开你的文件就能查看了!(为什么用WORD是因为它有字体识别功能。普通记事本只把文字链接到系统字体上,而英文系统的默认字体可不是不包含中文的哟!当然就显示不出来啦)

 

五、总结

将数据库中某一表中的指定条件的数据导出,并插入到另一个表的方法:

  1. 先执行 SELECT * INTO new_table FROM origin_table WHERE 条件 语句,将符合条件的数据导出到新创建的表中,并关闭SQL Server Management Studio(管理工作室),重新登录。(注:经测试,刷新或关闭连接并重新连接并不能将表刷新出来,且编写查询语句时报错)
  2. 右键新创建的表——设计——删除ID列——保存并查看表数据。
  3. 右键数据库——任务——生成脚本——输入导出sql文件路径和名称——高级——要编写脚本的数据的类型:仅限数据——导出成 .sql文件。
  4. 使用SQLServer Management Studio(管理工作室)中打开导出的 .sql文件,更改 USE [需要导入数据的表名称,例如table_new]  Ctrl+F快捷键 将表名批量更改为 需要导入数据的表名称,例如table_new,更改后保存 .sql文件。
  5. 到另一台需要导入数据的数据库连接,打开 .sql文件,F5运行 .sql文件,等待后,查看两个数据库的题数是否相同,如果题数相同,则导入成功。

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值