读取.csv表并将其打印为SQL查询输出

时间:2017-07-26 16:07:38

标签: sql tsql

我正在使用一个混合版本的T-SQL来生成有关数据库驱动的CAD软件(Solidworks Electrical)中的信息的报告。我正在尝试生成目录。由于软件的限制,我必须使用SQL生成此表。

我想要做的是在Excel中创建目录,将其保存为.csv,并让我的SQL查询读取此文件并将其作为输出吐出。

示例表:

Sheet,System
1,Radios
2,Processors
3,Navigation

经过一番搜索后,我一直无法找到解决方案。我的问题是:

1)读取存储在我的硬盘上的.csv文件

2)将此.csv文件转换为表格(不能存储在数据库中,在我们运行查询时只是暂时的)

3)输出此表中的数据作为查询结果

我尝试使用以下内容来阅读我的.csv表,但收到错误"语法错误,权限违规或其他非特定错误"。所以我的软件可能不会允许我阅读外部文件。 (注意,我的软件使用]] [[而不是引号....)

select 
]]col1[[,
]]col2[[,
]]col3[[
from openrowset('MSDASQL'
,'Driver={Microsoft Access Text Driver (*.txt, *.csv)}'
,'select * from D:\SQL Queries\input.CSV')

非常感谢任何帮助!感谢

1 个答案:

答案 0 :(得分:0)

这个sql对我有用:

select * from openrowset (bulk N'C:\Temp\source.csv', formatfile = N'C:\Temp\format.xml', firstrow=2) SourceFile

source.csv 的内容是:

Sheet,System
1,Radios
2,Processors
3,Navigation

format.xml 的内容是:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=","/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="128" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="ID" xsi:type="SQLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>
相关问题