Using this Function it will read the csv file and it returns the data table
static DataTable ImportCSVoDatatable(string FilePath)
{
DataTable dt = new DataTable();
string[] Lines = File.ReadAllLines(FilePath);
string[] Fields;
Fields = Lines[0].Split(new char[] { ',' });
int Cols = Fields.GetLength(0);
//1st row must be column names; force lower case to ensure matching later on.
for (int i = 0; i < Cols; i++)
dt.Columns.Add(Fields[i].ToLower(), typeof(string));
DataRow Row;
for (int i = 1; i < Lines.GetLength(0); i++)
{
Fields = Lines[i].Split(new char[] { ',' });
Row = dt.NewRow();
for (int f = 0; f < Cols; f++)
Row[f] = Fields[f];
dt.Rows.Add(Row);
}
return dt;
}
CSV File to SQL using Stored procedure
create procedure [dbo].[SP_Export](@FilePath nvarchar(500))
as
begin
DECLARE @filepath1 nvarchar(500)
--SET @filepath1 = ''+@FilePath+''
--select @FilePath1
DECLARE @bulkinsert NVARCHAR(2000)
SET @bulkinsert = 'bulk insert [dbo].[vw_bulk_insert_test] FROM '''+@filepath+''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'
--print @bulkinsert
EXEC sp_executesql @bulkinsert
end
--exec SP_Export 'D:\Pass sheets\SYNDOD26.02.14.csv'
1 Use a View
Create a view that has only required columns
Now use BULK INSERT using this view
2 Create Format file
Name it as format.txt Now use BULK INSERT using this format file
3 Use OPENROWSET
As you see method 3 doesn't require any extra work if the number of columns are different
Create a view that has only required columns
1.create view vw_bulk_insert_test2.as3.select first_name,last_name from bulk_insert_test1.BULK INSERT vw_bulk_insert_test2.FROM 'g:\test.txt'3.WITH4.(5.FIELDTERMINATOR =',',6.ROWTERMINATOR = '\n'7.)1.8.02.23.1 SQLCHAR 0 30 "," 2 first_name SQL_Latin1_General_Cp437_BIN4.2 SQLCHAR 0 30 "," 3 last_name SQL_Latin1_General_Cp437_BIN1.BULK INSERT bulk_insert_test2.FROM 'g:\test.txt'3.with (formatfile = 'g:\format.txt')1.INSERT INTO bulk_insert_test(first_name,last_name)2.SELECT3.*4.FROM5.OPENROWSET('Microsoft.Jet.OLEDB.4.0','text;HDR=NO;FMT=FixedLength;Database=g:\', test#txt)
Tags: t-sql, sql_server, bulk_insert,
No comments:
Post a Comment