Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Bulk import from CSV

Tags:

I need to import a large CSV file into an SQL server. I'm using this :

BULK  INSERT CSVTest         FROM 'c:\csvfile.txt'             WITH     (                 FIELDTERMINATOR = ',',                 ROWTERMINATOR = '\n'     ) GO 

problem is all my fields are surrounded by quotes (" ") so a row actually looks like :

"1","","2","","sometimes with comma , inside", ""  

Can I somehow bulk import them and tell SQL to use the quotes as field delimiters?

Edit: The problem with using '","' as delimiter, as in the examples suggested is that : What most examples do, is they import the data including the first " in the first column and the last " in the last, then they go ahead and strip that out. Alas my first (and last) column are datetime and will not allow a "20080902 to be imported as datetime.

From what I've been reading arround I think FORMATFILE is the way to go, but documentation (including MSDN) is terribly unhelpfull.

like image 617
Radu094 Avatar asked Sep 18 '08 20:09

Radu094


People also ask

How do I insert a CSV file into bulk insert in SQL?

Run BULK INSERT Command Ensure that the path is correct where you have placed your CSV file. For testing purposes, I have set maximum errors to 2. BULK INSERT Sales FROM 'C:\temp\1500000 Sales Records. csv' WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR='\n', BATCHSIZE=250000, MAXERRORS=2);


1 Answers

Try FIELDTERMINATOR='","'

Here is a great link to help with the first and last quote...look how he used the substring the SP

http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file

like image 98
K Richard Avatar answered Sep 29 '22 12:09

K Richard