想要从txt文件批量导入数据到SQL Server 2012的临时表中

4

我一直遇到这个错误:

解析错误在第1行,第1列:'BULK' 附近的语法不正确。

以下是我的文本。 我现在正在使用包含两行正确格式的测试文件,以排除其引起问题的可能性。

create table #tabled1
(
    vehicleid bigint,
    speed decimal(9,6),
    latitude decimal(9,6),
    longitude decimal(9,6),
    direction smallint,
    gpsquality tinyint
)
GO

BULK INSERT #tabled1
   FROM 'C:\Users\michael.mccarthy\documents\test.txt'
   WITH (
      FIELDTERMINATOR = '/t',
      rowtERMINATOR = '/n',
      KEEPNULLS
   );
GO

1
你正在创建一个临时表,但尝试插入到一个普通表中。 - JodyT
尝试使用以下代码:BULK INSERT #tabled1 - 在表名之前需要加上#符号! - marc_s
抱歉,这是复制时的打字错误。那不是问题所在。我已经在上面的查询中进行了更正。 - user2772056
该行引用的是正确的,就是带有"bulk"的那一行。我在多个地方尝试了,包括SQL Server和Visual Studio。也许这是一个权限问题?听起来似乎它期望在"bulk"前面有些东西。 - user2772056
2个回答

2

user2772056 -- 虽然您可能早就解决了这个问题,但您使用了错误的斜杠。分隔符和行终止符应该使用反斜杠 "\",而不是正斜杠 "/". 尝试使用以下方法--

WITH (
    FIELDTERMINATOR = '\t',
    rowtERMINATOR = '\n',
    KEEPNULLS
);

0

使用这个查询。

DECLARE @Query varchar(1000)
SET @Query ='BULK INSERT #tabled1  FROM "C:\Users\michael.mccarthy\documents\test.txt"
        WITH(   
                FIELDTERMINATOR = ''\t'',
                ROWTERMINATOR = ''\n''
            )'
EXEC (@Query)
SELECT * FROM #tabled1

我已在我的本地环境中测试过,它可以正常工作,请检查您的环境。 - Husen
我应该注意什么?对我来说,我觉得也没什么问题。这是权限问题吗?我可以插入临时表,也可以保存到这个位置,所以我不认为是权限的问题。 - user2772056
你正在使用SQL Server 2005吗? - Husen
SQL Server 2012 - user2772056

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接