SQL SERVER 的导入导出文件

每次要用到SQL SERVER 的导入导出文件都大为烦恼,甚至吓到面无人色。实在是太难用了,又繁琐,又总是报错,如果不是万不得已,鬼才用它。

这种不幸的事情,今天又撞上了。

事关有个数据库要从机器A迁移到机器B,倒霉的是,源数据库的版本比目标数据库高。真他妈的,微软,我操你姥姥!高版本的不能迁到低版本,那你在备份的时候加个选项不行吗?两个数据库都是SQL 2008,但居然还有高低之分。草泥马。

只好先从源数据库生成脚本,到目标库运行,然后将数据库导出导入。

这导出导入,真是吃尽了千辛万苦!

总结问题及解决方法如下:

一、导出

导出相对而言比较简单,一般都默认就可以了。有2个地方值得一提

1、unicode

适用于用到了字段类型为 nvarchar(max) 之类的情况,默认死活导不出来,将unicode选项勾上就可以鸟。



2、文本限定符

导出的时候也有个文本框让你填,叫“文本限定符”,what is this?

大意是这样子的:填上的这个东西,将会用于“框住”每个字段值,让字段有个清晰的边界,利于导入时系统分辨。

好比说,我导出的数据中,有好多文本,有些字段甚至保存的是文章内容,里面有逗号、句号、回车符什么的,那这个字段之间的边界就很不清晰了,导入的时候,系统很可能无法识别。这样的话就要靠这个文本限定符。

文本限定符可以不只一个字符!比如我这样定义文本限定符:!#!,那么导出来的文本内容是这样的:

!#!1!#!,!#!<p>文章概要:我心疼他,感激他,也想好好的爱他一生,狗屁!看错人啦!</p>!#!

相应地,导入时也要填写相同的文本限定符。


二、导入

1、一定要纠正字段的数据类型

导入的时候,系统会将所有的字段都默认当成字符型,且长度只有50,死活导不进去。一定要纠正字段的数据类型:


其中INT是四字节带符号整型,TINYINT是单字节无符号整型,NVARCHAR(MAX)是Unicode 文本流 [DT_NTEXT],等等


2、注意标识列

如果有字段是标识列,那应该在编辑映射时,将“启用标识插入”




原文地址:https://www.cnblogs.com/leftfist/p/4258067.html