我当前将以下数据存储在CSV文件中:
253056.0015
253056.0016
253056.0010
253056.0011
253056.0012
253056.0013
253056.0014
253056.0007
253056.0008
253056.0009
253056.0006
253056.0005
252914.0028
253056.0001
253056.0002
253056.0003
253056.0004
253058.0001
252914.0026
252914.0027
252914.0023
252914.0024
252914.0025
252914.0015
252914.0016
以上所有数据都在一栏中。
当我运行以下查询时:
select
*
from
openrowset(bulk 'C:\Audits.csv', single_clob) as data;
我得到这样的数据:
如何获取数据以使其完全显示在CSV文件中?
即-像这样在彼此下方显示它:
我尝试了以下操作,但没有成功...
declare @results varchar(max)
select
@results = BulkColumn
from openrowset(bulk 'C:\Audits.csv',single_clob) as data;
select value from string_split(@results, ' ');
请帮助。
答案 0 :(得分:3)
要直接从OPENROWSET
获取列,您需要定义一个Format File。一个更简单的替代方法是使用BULK INSERT
,例如
IF OBJECT_ID(N'tempdb..#Data', 'U') IS NOT NULL
DROP TABLE #Data;
CREATE TABLE #Data (Value DECIMAL(10, 4));
BULK INSERT #Data
FROM 'C:\Audits.csv'
WITH
(
FIRSTROW = 1,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
SELECT *
FROM #Data;
NB这仅适用于:
CREATE TABLE #Data (Value DECIMAL(10, 4));
BULK INSERT #Data
FROM 'C:\Audits.csv';
但是我包含了这些选项,因为这些是相当普遍的事情,可能需要修改。
答案 1 :(得分:1)
您所稀疏的是一个空格' '
并不是一个真正的空格。
您可以将(SELECT SUBSTRING(@results , 12, 1))
用作
select value from string_split(@results, (SELECT SUBSTRING(@results , 12, 1)));