Удаление символов цитаты из файла при массовой вставке данных в таблицу

#sql #sql-server #tsql #bulk-load

#sql #sql-сервер #tsql #массовая загрузка

Вопрос:

Это 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:UsersSAMIRDownloadsTelegram Desktopusers.txt'
WITH (
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = 'n',
      --FIRSTROW = 0,
      --UTF-8
      CODEPAGE = '65001'
);
  

Итак, это Users.txt данные файла:

 `1, N'Alex', N'Mituchin', N'qwe@gmail.com', NULL`
  

Когда я загружаю данные из файла, он устанавливает Username значения, подобные N'Alex' . Но я хочу, чтобы данные были просто такими Alex . Как я могу решить эту проблему?

Комментарии:

1. Как вы загружаете данные?

2. Ох. Я должен добавить пример массовой вставки.

3. Пожалуйста, покажите сценарий / метод, который вы используете для загрузки Users.txt в свою базу данных

4. Посмотрите еще раз, пожалуйста. Я отредактировал свой вопрос

5. попробуйте добавить DATAFILETYPE = 'widechar' в WITH часть запроса. Это указывает BULK INSERT использовать формат символов Unicode при массовом импорте данных. Смотрите: learn.microsoft.com/en-us/sql/relational-databases /…

Ответ №1:

Я рекомендую загружать данные в промежуточную таблицу, где значения являются строками.

Затем вы можете использовать простой запрос для получения конечных результатов. В этом случае вы можете сделать:

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

Комментарии:

1. Спасибо! Нет ли способа вырезать символ цитаты при загрузке данных из файла. В этом случае я должен написать триггер (когда данные, включенные в таблицу, устанавливают данные с помощью блока кода обновления). Я хочу знать, как я могу вырезать данные при загрузке данных в таблицу.

2. @SamirHemzeyev . . . Наверное, так и есть. Я думаю, что это самое простое и наиболее общее решение для получения данных в базу данных.

Ответ №2:

Для этого есть вариант получше. Если разделители строк и индикаторы юникода соответствуют друг другу (они присутствуют во всех строках), вам следует использовать файл формата, в котором вы можете указать разделители для каждого столбца. Это позволит вам установить , N' в качестве разделителя между первым и вторым столбцами, ', N' в качестве разделителя для второго и третьего столбцов и так далее.