sql server批量插入和临时表

时间:2016-02-02 23:34:45

标签: sql-server bulkinsert

我一直在学习MYSQL,但决定尝试SQL SERVER。我基本上只是将代码从MYSQL粘贴到SQL SERVER,并确定代码的哪些部分需要适应在SQL SERVER中工作。我正在尝试创建一个临时表,并从文本文件批量插入到此临时表中。这个语句在MYSQL中可以正常显示:

    CREATE TEMPORARY TABLE test123
    (
    Reason_t VARCHAR(30) DEFAULT NULL,
    Month_t VARCHAR(30) DEFAULT NULL,
    Year_t VARCHAR(30) DEFAULT NULL,
    Week_Type_t VARCHAR(30) DEFAULT NULL,
    accident_time_t VARCHAR(30) DEFAULT NULL,
    Alcohol_Level_t VARCHAR(30) DEFAULT NULL,
    Age_t VARCHAR(30) DEFAULT NULL,
    Gender_t VARCHAR(30) DEFAULT NULL);

    LOAD DATA LOCAL INFILE 'C:\\Users\\jon\\OneDrive\\Desktop\\roadsafety_test123.txt' 
     INTO TABLE test123
     FIELDS TERMINATED BY ','
     LINES STARTING BY '' TERMINATED BY '\r\n'
     IGNORE 1 LINES;

在SQL SERVER中我到目前为止已经提出了这个:

    DECLARE @test123 TABLE
    (
    Reason_t VARCHAR(30) DEFAULT NULL,
    Month_t VARCHAR(30) DEFAULT NULL,
    Year_t VARCHAR(30) DEFAULT NULL,
    Week_Type_t VARCHAR(30) DEFAULT NULL,
    accident_time_t VARCHAR(30) DEFAULT NULL,
    Alcohol_Level_t VARCHAR(30) DEFAULT NULL,
    Age_t VARCHAR(30) DEFAULT NULL,
    Gender_t VARCHAR(30) DEFAULT NULL);

    BULK INSERT test123 FROM   'C:\\Users\\jon\\OneDrive\\Desktop\\roadsafety_test123.txt' 
    WITH (  FIELDTERMINATOR =',', FIRSTROW = 2, ROWTERMINATOR = '\N');

SQL SERVER中的查询不起作用,但是临时表操作似乎不像MYSQL那样直接,我很难找到有关它的相关信息。我也尝试使用标准的CREATE TABLE语句插入创建test123表,但是我仍然在test123中为age_t列获得了错误4863,就数据而言,我看到没有问题,它在MYSQL中完全正常。

我确信我已经错过了一些明显的事情,或者做了一些错误的事情,因为我之前从未真正使用过SQL SERVER,但找不到任何确定的答案。

1 个答案:

答案 0 :(得分:1)

You should also provide at least a few lines of the file you would use to import, it might help others to pinpoint what could be causing the error. :)

BULK INSERT test123 FROM 'C:\\Users\\jon\\OneDrive\\Desktop\\roadsafety_test123.txt' WITH (FIELDTERMINATOR =',', FIRSTROW = 2);

Just an idea, could you try removing the "ROWTERMINATOR = '\N'" part of the code. Bulk Insert in SQL Server treats the "end-of-line" as the default row terminator. And I read somewhere that Windows Text Files uses a different end-of-line symbols, CR LF, to mark the end of a row. Though I can't find the reference, you can see for it yourself by opening a text file with Notepad++, Click the View tab, Show Symbol, then ticking Show End-of-Line.

相关问题