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

问题描述 投票:1回答:2

我已将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尝试过,但没有找到解决方案。

sql string csv variables sql-server-2017
2个回答
0
投票

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

How to split a comma-separated value to columns


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
© www.soinside.com 2019 - 2024. All rights reserved.