【问题标题】:BULK INSERT Incorrect syntax near 'BULK'. / BCP pushing to prod instead of devBULK INSERT 'BULK' 附近的语法不正确。 / BCP 推送到 prod 而不是 dev
【发布时间】:2017-11-14 04:21:29
【问题描述】:

第一个问题:我是 SSMS 新手,并试图用 csv 文件填充一个空表:

BULK INSERT database.schema.ExpectedValuesBASE
FROM 'bla\bla\bla\output_teaching.csv'
WITH
    (
        FIRSTROW = 2,
        FIELDTERMINATOR = ',',  --CSV field delimiter
        ROWTERMINATOR = '\n',   --Use to shift the control to next row
        TABLOCK
    );

我收到以下错误:

第 1 行第 1 列解析错误:“BULK”附近的语法不正确。

第二个问题:

BCP database.schema.ExpectedValuesBASE in blah/bla/output.csv -S DEVSERVERNAME -U ******** -P ****** -t ',' -q -c

这是将值写入生产服务器,而不是指定的DEVSERVERNAME

【问题讨论】:

    标签: sql-server ssms bulkinsert bcp


    【解决方案1】:

    此查询使用批量插入将文件存储在 #temptable 中,然后将此临时表中的内容插入到数据库中所需的表中。

     CREATE TABLE #temptable (col1,col2,col3)
     BULK INSERT #temptable from 'C:\yourfilelocation\yourfile.csv' 
     WITH 
        (
        FIRSTROW = 2, 
        fieldterminator = ',', 
        rowterminator = '0x0A' 
        ) `
    
    
    INSERT INTO yourTableInDataBase (col1,col2,col3)
    SELECT (col1,col2,col3)
    FROM #temptable
    

    您可以在 SQL Server 中执行上述查询,也可以将其放在存储过程中并使用批处理调用存储过程。复制以下代码并将其放入文本文件中并保存为.cmd 扩展名并运行。

    set MYDB= yourDBname
    set MYUSER=youruser
    set MYPASSWORD=yourpassword
    set MYSERVER=yourservername
    sqlcmd -S %MYSERVER% -d %MYDB% -U %MYUSER% -P %MYPASSWORD% -h -1 -s "," -W -Q "exec yourstoredprocedure"
    

    【讨论】:

    • 当我执行上述查询时,我在第 9 行第 1 列出现同样的错误解析错误:'BULK' 附近的语法不正确
    • 确保临时表中的列名(col1、col2、col3)与您尝试导入的列的名称和格式(varchar、int 等)相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2015-12-12
    • 2011-12-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多