Sql 向表大容量插入数据时,从文件中删除引号字符
这是Sql 向表大容量插入数据时,从文件中删除引号字符,sql,sql-server,tsql,bulk-load,Sql,Sql Server,Tsql,Bulk Load,这是用户表 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) ); 这是批量插入 B
用户
表
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 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'qwe@gmail.com', 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'
设置为第二列和第三列之间的分隔符,依此类推。如何加载数据?哦。我必须添加批量插入示例。请显示用于将Users.txt
加载到数据库中的脚本/方法请再次查看。我编辑了我的问题,尝试将DATAFILETYPE='widechar'
添加到查询的部分。这告诉批量插入在批量导入数据时使用Unicode字符格式。看:谢谢!从文件中加载数据时,无法剪切引号字符。在这种情况下,我必须写入触发器(当数据包含到带有更新代码块的表集合数据中时)。我想知道在将数据加载到表中时如何剪切数据。@SamirHemzeyev。可能有。我认为这是将数据导入数据库的最简单、最通用的解决方案。