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