在两个SQL表中导入CSV数据

时间:2016-02-02 11:02:35

标签: c# sql-server csv

我有一个包含10列的CSV文件。我想使用C#

在一个SQL表中保存5列,在第二个SQL表中保存下5个列

1 个答案:

答案 0 :(得分:1)

我认为最简单(也可能是最快)的方法是使用临时表。

假设以下CSV文件:

Column1,Column2,Column3,Column4,Column5,Column6,Column7,Column8,Column9,Column10
Row1Value1,Value2,Value3,Value4,Value5,Value6,Value7,Value8,Value9,Value10
Row2Value1,Value2,Value3,Value4,Value5,Value6,Value7,Value8,Value9,Value10
...

使用类似这样的东西(在你的C#中)将文件导入de DB,你可以在那里影响文件路径:

    CREATE TABLE #temp( column1 varchar,
                        column2 varchar,
                        column3 varchar,
                        column4 varchar,
                        column5 varchar,
                        column6 varchar,
                        column7 varchar,
                        column8 varchar,
                        column9 varchar,
                        column10 varchar);

    BULK INSERT #temp1
       FROM 'C:\Test.csv'
       WITH (
             FIELDTERMINATOR =',',
             ROWTERMINATOR = '\ n',
             FIRSTROW = 2
          )

现在您可以使用 INSERT INTO SELECT 在其他表中选择列:

    INSERT INTO table1
    (Id, Name, Title, Desription, Date)
    SELECT column1, column3, column5, column7, column10
    FROM #temp1;

    INSERT INTO table2
    (SupplierName, Country, Contact, Addres, City)
    SELECT column2, column4, column6, column8, column9
    FROM #temp1;

如果您愿意,可以立即DROP或EMPTY#temp1表。