将存储在字符串变量中的CSV转换为表格

时间:2019-03-19 14:32:46

标签: sql string csv variables sql-server-2017

我已经将CSV数据存储在SQL的字符串变量中

@csvContent = 
'date;id;name;position;street;city
 19.03.2019  10:06:00;1;Max;President;Langestr. 35;Berlin
 19.04.2019  12:36:00;2;Bernd;Vice President;Haupstr. 40;Münster
 21.06.2019  14:30:00;3;Franziska;financial;Hofstr. 19;Frankfurt'

我想要做的是将其转换为#table,这样看起来就像

SELECT * FROM #table

 date                 id  name   position       street        city
 ---------------------------------------------------------------------
 19.03.2019  10:06:00 1   Max    President      Langestr. 35  Berlin
 19.04.2019  12:36:00 2   Bernd  Vice President Haupstr. 40   Münster
 21.06.2019  14:30:00 3   Franzi financial      Hofstr. 19    Frankfurt

标题不是固定的,因此CSV可能具有更多或更少具有不同标题名称的列。

我已经用split_string()pivot进行了尝试,但没有找到解决方案。

2 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server,这可能是您的请求的一种解决方案:

How to split a comma-separated value to columns

答案 1 :(得分:0)

希望对您有帮助

    CREATE TABLE #temp(
        date date,
        id int ,
        name varchar(100), 
       . ....... //create column that you needed
    )
DECLARE @sql NVARCHAR(4000) = 'BULK INSERT #temp
        FROM ''' + @CSVFILE+ ''' WITH 
        ( 
            FIELDTERMINATOR ='';'',
            ROWTERMINATOR =''\n'', 
            FIRSTROW = 2
         )';

        EXEC(@sql);

        SELECT *FROM #temp
        DROP TABLE #temp