在将数据批量插入表时从文件中删除引用字符

问题描述 投票:1回答:2

这是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。我该如何解决这个问题?

sql sql-server tsql bulk-load
2个回答
1
投票

我建议将数据加载到临时表中,其中值是字符串。

然后,您可以使用简单查询来获得最终结果。在这种情况下,您可以这样做:

select (case when name like 'N''%'''
             then substring(name, 2, len(name) - 3)
             else name
        end) as name
from staging

0
投票

这是一个更好的选择。如果字符串分隔符和unicode指示符一致(它们出现在所有行上),则应使用格式文件,您可以在其中指示每列的分隔符。这将允许您将, N'设置为第一列和第二列之间的分隔符,', N'作为第二列和第三列的分隔符,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.