任務
運行在微軟官網指引的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. 經過一系列格式調整,將自生文件測試通過,解決導入漢字亂碼問題。