读取.csv表并将其打印为SQL查询输出
问题描述:
我正在使用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')
任何援助将不胜感激!由于
答
这个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>