#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'
в качестве разделителя для второго и третьего столбцов и так далее.