里面有个违法约束,大概是主键重复之类。应该有些数据导入成功了吧。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、银海网站维护、网站推广。
ntext
可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。
text
服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。
一点问题都没有。
sqlserver 你建表时下面有属性啊,有指定默认值这一项。
你通过代码页可以实现,就是在定义字段后面加上 default 值
排序规则指定表示数据集中每个字符的位模式。排序规则还决定用于数据排序和比较的规则。SQL Server 2005 支持在单个数据库中存储具有不同排序规则的对象,即 SQL Server 数据库中每列都可以有各自的排序规则。对于非 Unicode 列,排序规则设置指定数据的代码页,从而指定可以表示哪些字符。数据可以在 Unicode 列之间无缝地移动。在非 Unicode 列之间移动数据时,数据不能无缝地移动,而必须经当前代码页转换。如果 Transact-SQL 语句运行于各自都具有不同排序规则设置的数据库的上下文中,则其运行结果可能会不同。如果可能,最佳实践应包括对组织使用标准化排序规则。如果已在组织中的所有系统上使用标准的排序规则设置,则无需在每个字符或 Unicode 表达式中显式地指定排序规则。如果必须使用具有不同排序规则和代码页设置的对象,则必须对查询进行编码以考虑排序规则优先级的规则。排序规则的特征是区分语言、区分大小写、区分重音、区分假名以及区分全半角。Unicode 使用两个而不是一个字节来表示语言的字符,这使得单个 Unicode 字符集可以表示世界上几乎所有书面语言。如果存储的字符数据反映多种语言,则应始终使用 Unicode 数据类型(nchar、nvarchar 和 ntext),而不要使用非 Unicode 数据类型(char、varchar 和 text)。使用 Unicode 可以体验到显著的性能提升,因为所需的代码页转换较少。非 Unicode 数据类型有明显的局限性,因为非 Unicode 计算机只能使用单个代码页。若要全面评估与使用 Unicode 或非 Unicode 数据类型相关的问题,必须测试您的具体方案以确定在特定环境下的性能差异大小。至少应对站点排序规则进行标准化,并尽可能部署 Unicode 服务器和客户端。
第一步,打开导入导出工具。(win7 32位系统下SQL自带,64位系统下好像要装)
第二步,选择源文件的格式。这里txt格式文件选择平面文件源。
第三步,浏览选择文件源,其中代码页要改成简体中文。另外在列中可查看导入的数据列是否正确,在高级中可编辑字段名。
第四步,选择目标服务器和数据库。就是确定数据文件要导入到哪一个一个服务器的哪一个数据库中。
第五步,选择目标表,打开编辑映射。默认时以文件名建立新表。
第六步,编辑映射。把数据对应导入数据库各字段中!若是目标表是新建的,那么要编辑数据库中的个字段名以及数据类型。
那么做完这些后只要数据源没有问题,单击下一步……就可以搞定了。
现在说说导入数据时要注意的地方。在导入txt格式的文件时首先需要注意数据的排列。每一列之间用统一的分隔符隔开,删除无关的行信息。另外需要注意的是,txt格式的文件导入时空格也是被读取的,所以要删除空格。其实导入时我遇到的就这么点问题,却足足卡了我一天半。数据按要求排列后如图所示:
我们通过SQL脚本来插入数据,常见如下四种方式。
方式一:一条一条插入,性能最差,不建议使用。
INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛栏1段',160);INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛栏2段',260);
......
方式二:insert bulk
语法如下:
BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' }
WITH (
[ BATCHSIZE [ = batch_size ] ],
[ CHECK_CONSTRAINTS ],
[ CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ],
[ DATAFILETYPE [ = 'char' | 'native'| 'widechar' | 'widenative' ] ],
[ FIELDTERMINATOR [ = 'field_terminator' ] ],
[ FIRSTROW [ = first_row ] ],
[ FIRE_TRIGGERS ],
[ FORMATFILE = 'format_file_path' ],
[ KEEPIDENTITY ],
[ KEEPNULLS ],
[ KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ],
[ LASTROW [ = last_row ] ],
[ MAXERRORS [ = max_errors ] ],
[ ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ],
[ ROWS_PER_BATCH [ = rows_per_batch ] ],
[ ROWTERMINATOR [ = 'row_terminator' ] ],
[ TABLOCK ],
)
相关参数说明:
BULK INSERT
[ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
(
[ [ , ] BATCHSIZE = batch_size ] --BATCHSIZE指令来设置在单个事务中可以插入到表中的记录的数量
[ [ , ] CHECK_CONSTRAINTS ] --指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且在此操作之后表的约束将标记为不可信。
[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] --指定该数据文件中数据的代码页
[ [ , ] DATAFILETYPE =
{ 'char' | 'native'| 'widechar' | 'widenative' } ] --指定 BULK INSERT 使用指定的数据文件类型值执行导入操作。
[ [ , ] FIELDTERMINATOR = 'field_terminator' ] --标识分隔内容的符号
[ [ , ] FIRSTROW = first_row ] --指定要加载的第一行的行号。默认值是指定数据文件中的第一行
[ [ , ] FIRE_TRIGGERS ] --是否启动触发器
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] KEEPIDENTITY ] --指定导入数据文件中的标识值用于标识列
[ [ , ] KEEPNULLS ] --指定在大容量导入操作期间空列应保留一个空值,而不插入用于列的任何默认值
[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
[ [ , ] LASTROW = last_row ] --指定要加载的最后一行的行号
[ [ , ] MAXERRORS = max_errors ] --指定允许在数据中出现的最多语法错误数,超过该数量后将取消大容量导入操作。
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] --指定数据文件中的数据如何排序
[ [ , ] ROWS_PER_BATCH = rows_per_batch ]
[ [ , ] ROWTERMINATOR = 'row_terminator' ] --标识分隔行的符号
[ [ , ] TABLOCK ] --指定为大容量导入操作持续时间获取一个表级锁
[ [ , ] ERRORFILE = 'file_name' ] --指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。
)]
方式三:INSERT INTO xx select...
INSERT INTO Product(Id,Name,Price) SELECT NEWID(),'牛栏1段',160
UNION ALL
SELECT NEWID(),'牛栏2段',180 UNION ALL......
方式四:拼接SQL
INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛栏1段',160)
,(newid(),'牛栏2段',260)
......