任务
运行在微软官网指引的sql server的数据示例。
解决报错,根据提示设置为sqlcmd模式
Open the script inside SQL Server Management Studio and enable SQLCMD mode.
- This option is in the Query menu.
创建表
CREATE TABLE [dbo].[DimCurrency](
[CurrencyKey] [int] IDENTITY(1,1) NOT NULL,
[CurrencyAlternateKey] [nchar](3) NOT NULL,
[CurrencyName] [nvarchar](50) NOT NULL
) ON [PRIMARY];
GO
dbo
数据类型
-
char和varchar
区别:varchar长度可变,以效率换空间。 -
字符长度为用户定义的完整性约束,插入超过长度则终止。
- NULL 与 NOT NULL
非空即在插入新数据时必须有相应值
- IDENTITY(1,1)
括号内代表起始值与步长,未开启indentity_insert则自动生成,不可插入。
关于identity用法的介绍
导入表
BULK INSERT [dbo].[DimCurrency] FROM '$(SqlSamplesSourceDataPath)DimCurrency.csv'
WITH (
CHECK_CONSTRAINTS,
-- CODEPAGE='ACP',
DATAFILETYPE = 'widechar',
FIELDTERMINATOR= '|',
ROWTERMINATOR = '\n',
KEEPIDENTITY,
TABLOCK
);
- 从文件系统路径导入数据
$(SqlSamplesSourceDataPath)
表示将变量SqlSamplesSourceDataPath
解释为字符,在前面已定义为:
:setvar SqlSamplesSourceDataPath "C:\Samples\adventure-works\data-warehouse-install-script\"
- 括号内为导入规则,重点为:
DATAFILETYPE
文件字符格式FIELDTERMINATOR
数据间分隔符,csv(逗号分隔值)格式文件显然为逗号,此示例为 ’ | '。
详见文章:Bulk Insert命令详细
3. 经过一系列格式调整,将自生文件测试通过,解决导入汉字乱码问题。