2017-07-26 58 views
0

我正在使用T-SQL的混搭版来生成有关数据库驱动的CAD软件(Solidworks Electrical)内的信息的报告。我正在尝试生成目录。由于软件限制,我必须使用SQL生成此表。读取.csv表并将其打印为SQL查询输出

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

示例表:

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

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

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

2)开启此.csv文件为表(无法获取存储在数据库中,只是暂时的,而我们运行查询)

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

我曾尝试使用以下方法来读我的.csv表,但收到错误“语法错误,违反权限,或其他非特异性的结果错误”。所以有可能我的软件不允许我读取外部文件。 (NB,我的软件使用]] [[而不是引号....]

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

任何援助将不胜感激!由于

回答

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>