这是Users
表
CREATE TABLE Users
(
Id INT PRIMARY KEY IDENTITY(0,1),
Name NVARCHAR(20) NOT NULL,
Surname NVARCHAR(25) NOT NULL,
Email NVARCHAR(30),
Facebook NVARCHAR(30),
CHECK(Email IS NOT NULL OR Facebook IS NOT NULL)
);
这是BULK INSERT
BULK INSERT Users
FROM 'C:\Users\SAMIR\Downloads\Telegram Desktop\users.txt'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
--FIRSTROW = 0,
--UTF-8
CODEPAGE = '65001'
);
这是Users.txt
文件数据:
`1, N'Alex', N'Mituchin', N'[email protected]', NULL`
当我从文件加载数据时,它将Username
设置为N'Alex'
之类的值。但我希望数据简单地像Alex
。我该如何解决这个问题?
我建议将数据加载到临时表中,其中值是字符串。
然后,您可以使用简单查询来获得最终结果。在这种情况下,您可以这样做:
select (case when name like 'N''%'''
then substring(name, 2, len(name) - 3)
else name
end) as name
from staging
这是一个更好的选择。如果字符串分隔符和unicode指示符一致(它们出现在所有行上),则应使用格式文件,您可以在其中指示每列的分隔符。这将允许您将, N'
设置为第一列和第二列之间的分隔符,', N'
作为第二列和第三列的分隔符,依此类推。