sql insert une requête via un file text

J'essaye d'insert des données de la feuille excel à la database de SQL. La requête est stockée dans un file text comme suit:

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

Lorsque j'exécute la command suivante:

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

il montre cette erreur:

Msg 7357, niveau 16, état 2, server ADMIN-PC \ SEXPRESS, ligne 1

Quelqu'un peut-il aider s'il vous plaît à rectifier mon problème.

Essayez d'utiliser le vizard d'import du server SQL pour créer une nouvelle table à partir du file xls, puis insérez ces données dans la table existante à partir de ce file. Le problème que vous rencontrez est peut-être dû à la non-compatibilité entre l'instance SQL 64 bits et Excel 32 bits.

Ou essayez d'utiliser bcp

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

Il y a un autre moyen d'get le même résultat.

créer une table temporaire

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

Ensuite, faites votre OPENROWSET, BCP, etc. à partir d'ici.

Vous pouvez créer un script shell qui lira automatiquement les commands d'insertion à partir du file .csv, puis l'écrira dans la database. Si tu veux, je peux t'aider. Ce que vous devez juste faire est d'écrire toutes les instructions d'insertion dans le file .csv.

 #!/bin/ksh sqlplus -silent /nolog << EOF > /dev/null username/pwd@"Connection Ssortingng" 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 

Il lira le file .csv et inserta automatiquement les loggings dans la database.