如何插入没有双引号的csv文件

时间:2015-08-11 08:58:55

标签: sql csv bulkinsert sql-server-2014

我正在使用SQL 2014。

这是我目前的代码:

CREATE TABLE tmp_OKFF
    (
        OKCCY VARCHAR(5),
        OKBRNM VARCHAR(6),
        OKONPX VARCHAR(17),
        OKONPM VARCHAR(17),
        OKFRX VARCHAR(19),
        OKFPX VARCHAR(19),
        OKMRX VARCHAR(17),
        OKMPX VARCHAR(17),
        OKSEQ VARCHAR(3)
    )

BULK INSERT tmp_OKFF
    FROM 'C:\sample.CSV'
    WITH (FORMATFILE='C:\sample.fmt')

以下是csv中的示例数据:

"ABC","0001",-990039739       ,0                ,0                  ,0                  ,0                ,0                ,0
"ABC","    ",-3422054702      ,0                ,481385             ,0                  ,0                ,0                ,0
"XXX","0001",0                ,0                ,0                  ,0                  ,0                ,0                ,0
"ASD","    ",0                ,0                ,0                  ,0                  ,0                ,0                ,0
"JED","0001",21644944         ,0                ,0                  ,0                  ,0                ,0                ,0
"FAQ","    ",74815363         ,0                ,0                  ,11120              ,0                ,0                ,0
"PHP","0002",905175206        ,0                ,0                  ,0                  ,0                ,0                ,0

这里是格式的确切脚本:

12.0
10
1 SQLCHAR 0 0 "\"" 0 "" ""
2 SQLCHAR 0 5 "\",\"" 1 OKCCY SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 6 "\",\"" 2 OKBRNM SQL_Latin1_General_CP1_CI_AS
4 SQLMONEY 0 19 "\",\"" 3 OKONPX SQL_Latin1_General_CP1_CI_AS
5 SQLMONEY 0 19 "\",\"" 4 OKONPM SQL_Latin1_General_CP1_CI_AS
6 SQLMONEY 0 21 "\",\"" 5 OKFRX SQL_Latin1_General_CP1_CI_AS
7 SQLMONEY 0 21 "\",\"" 6 OKFPX SQL_Latin1_General_CP1_CI_AS
8 SQLMONEY 0 19 "\",\"" 7 OKMRX SQL_Latin1_General_CP1_CI_AS
9 SQLMONEY 0 19 "\",\"" 8 OKMPX SQL_Latin1_General_CP1_CI_AS
10 SQLMONEY 0 5 "\"\r\n" 9 OKSEQ SQL_Latin1_General_CP1_CI_AS

我在执行这些脚本后遇到错误:

Msg 4863, Level 16, State 1, Line 20
Bulk load data conversion error (truncation) for row 1, column 3 (OKBRNM).

1 个答案:

答案 0 :(得分:0)

我根据您的表格和样本更改了您的格式文件:

11.0                                                       => I am using SS2012
10
1 SQLCHAR 0 1 "\"" 0 ""                                    => change from 0 to 1
2 SQLCHAR 0 3 "\",\"" 1 OKCCY SQL_Latin1_General_CP1_CI_AS => 5 to 3 (length in your sample)
3 SQLCHAR 0 4 "\"," 2 OKBRNM SQL_Latin1_General_CP1_CI_AS  => remove last after comma and change 6 to 4
4 SQLCHAR 0 17 "," 3 OKONPX SQL_Latin1_General_CP1_CI_AS   => change 19 to 17 and remove quote
5 SQLCHAR 0 17 "," 4 OKONPM SQL_Latin1_General_CP1_CI_AS   => change to 17 and remove quotes
6 SQLCHAR 0 19 "," 5 OKFRX SQL_Latin1_General_CP1_CI_AS    => change to 19 and remove quotes
7 SQLCHAR 0 19 "," 6 OKFPX SQL_Latin1_General_CP1_CI_AS    => change to 19 and remove quotes
8 SQLCHAR 0 17 "," 7 OKMRX SQL_Latin1_General_CP1_CI_AS    => change to 17 and remove quotes
9 SQLCHAR 0 17 "," 8 OKMPX SQL_Latin1_General_CP1_CI_AS    => change to 17 and remove quotes
10 SQLCHAR 0 3 "\r" 9 OKSEQ SQL_Latin1_General_CP1_CI_AS   => change to 17 and remove quotes
=> line break

输出select * from tmp_okff

OKCCY OKBRNM OKONPX             OKONPM              OKFRX               OKFPX               OKMRX           OKMPX               OKSEQ
ABC 0001    -990039739          0                   0                   0                   0                   0                   0
ABC         -3422054702         0                   481385              0                   0                   0                   0
XXX 0001    0                   0                   0                   0                   0                   0                   0
ASD         0                   0                   0                   0                   0                   0                   0
JED 0001    21644944            0                   0                   0                   0                   0                   0
FAQ         74815363            0                   0                   11120               0                   0                   0
PHP 0002    905175206           0                   0                   0                   0                   0                   0