BULK INSERT'BULK'附近的语法不正确。 / BCP推动prod而不是dev

时间:2017-11-14 04:21:30

标签: sql-server ssms bulkinsert bcp

第一个问题:我是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

1 个答案:

答案 0 :(得分:0)

此查询使用批量插入将文件存储在#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"