How to create and populate a table in a single step as part of a CSV import operation?

前端 未结 3 1598
悲&欢浪女
悲&欢浪女 2020-12-03 03:43

I am looking for a quick-and-dirty way to import CSV files into SQL Server without having to create the table beforehand and define its columns.

Each impo

3条回答
  •  萌比男神i
    2020-12-03 03:47

    Annoying, I don't have the rep points yet to just comment, so I'll add an answer based on TyT's (that handle looks terrible in possessive, btw ...)

    The worker code needed a double "\" instead of a single for me to avoid a "file not found" error. And you don't have to specify the fields; they will be inferred from the first row of the file:

    select *
    into   CsvImportTable
    from   openrowset(
               'MSDASQL',
               'Driver={Microsoft Access Text Driver (*.txt, *.csv)}',
               'select * from C:\\csvtestfile.csv')
    

    I had no problems with the Access driver.

    UPDATE: If you have trouble with the types being inferred incorrectly, insert a few rows at the top of the file with data of the type you want in the table so you get, say text -> VARCHAR instead of text-> INT and then delete those rows after the import.

    As the final icing, add a PK to the table so you can manipulate the data - delete the dummy rows, etc:

    alter table CsvImportTable add Id int identity(1, 1)
    

提交回复
热议问题