我正在尝试将许多不同的 csv 文件导入 SQL Server 2008R2 数据库
文件中的数据以逗号分隔。
我对文件格式没有发言权。
有些列是文本,并用双引号分隔(“就像在 Excel 中一样”)。
这些列包含的文本可能在文本中包含额外的逗号(“但是,它让我发疯”)。
我尝试使用批量插入将文本文件加载到多个 SQL 表中。但是,文本列中嵌入的逗号会导致其崩溃。 SQL Server 2017 包含设置选项FORMAT =CSV and FIELDQUOTE = '"'
但我坚持使用 SQL Server 2008R2。
我可以使用 DTS/SSIS,但它将 VS 版本链接到 SQL 版本。因此,如果我在 VS2012 或 VS2010 中编写 SSIS,它可能无法与我们的 SQL Server 2008R2 一起工作。而且我认为我们还没有任何 VS2008。
那么导入这些 CSV 文件的下一个最佳方法是什么?
批量上传是将六个不同的 csv 文件上传到不同表中的最简洁的方法。
我是否预处理 csv 文件并将逗号替换为管道。如果是这样,我如何知道要替换哪些逗号(正则表达式?)?
或者我是否在.Net 中完成整个导入?这既混乱又耗时。
您所需要的只是一个 SQL 格式文件。尽管有一些关于如何使用格式文件的链接,但我只找到了一个解释它如何正常工作的链接,其中包括带有逗号的文本字段。
这是 sql 脚本中使用的语法
BULK INSERT raw.routes FROM N'C:\WhereMyTextFileis\Import.txt'
WITH (
FORMATFILE = N'C:\WhereMyFormatFileIS\MyFormat.fmt'
,FIRSTROW = 2
)
这是我的格式文件的内容
10.0
8
1 SQLCHAR 0 50 "," 1 RouteID ""
2 SQLCHAR 0 50 ",\"" 2 RouteShortName Latin1_General_CI_AS
3 SQLCHAR 0 100 "\"," 3 RouteLongName Latin1_General_CI_AS
4 SQLCHAR 0 200 "," 4 RouteDescription ""
5 SQLCHAR 0 50 "," 5 RouteType ""
6 SQLCHAR 0 2000 "," 6 RouteURL ""
7 SQLCHAR 0 100 "," 7 RouteColour ""
8 SQLCHAR 0 100 "\r\n" 8 RouteTextColour ""
看起来很奇怪的“,”“”是删除引用文本列RouteShortName开头的双引号,“”,”删除引用文本列RouteShortName末尾的引号。但重要的一点是逗号保存在列数据内容中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)