sql通过文本文件插入查询

时间:2014-04-20 05:41:43

标签: sql sql-server

我试图将数据从excel表插入到sql数据库中。查询存储在文本文件中,如下所示:

insert into [demo].[dbo].[relative] 
select *  
from openrowset('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=D:\relative.xls','select * from [sheet1$]'); 

当我执行以下命令时:

sqlcmd -S ADMIN-PC/SEXPRESS -i d:\demo.txt.

显示此错误:

  

Msg 7357,Level 16,State 2,Server ADMIN-PC \ SEXPRESS,Line 1

任何人都可以帮助纠正我的问题。

3 个答案:

答案 0 :(得分:0)

还有另一种方法可以获得相同的结果..

创建临时表。

declare @sometable table (value varchar(50), translation varchar(max))
select * into @sometable from YOUR_DATABASE_TABLE (nolock)

然后,从这里开始你的OPENROWSET,BCP等。

答案 1 :(得分:0)

尝试使用sql server import vizard从xls文件创建一个新表,然后从那里将该数据插入到现有表中。您遇到的问题可能是由于64位sql实例与32位excel之间不兼容。

或尝试使用bcp

bcp demo.dbo.relative in "D:\relative.xls" -c -T 

答案 2 :(得分:0)

您可以创建一个shell脚本,该脚本将自动从.csv文件中读取插入命令,然后将其写入数据库。如果你愿意,我可以帮助你。您只需要在.csv文件中写入所有插入语句。

#!/bin/ksh
sqlplus -silent /nolog  << EOF > /dev/null
username/pwd@"Connection String"
set linesize 0;
set pagesize 0;
set echo off;
while read line; do
A=`echo "$line" | awk -F" " {print 1}`
and so on depends on the number of words in the insert statements.
$A $B  
done < your_insert_statements.csv

它将读取.csv文件并自动在数据库中插入记录。