[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.sqlserver.programming

NEED HELP IN CODE: NOT A VALID IDENTIFIER (openrowset

Claudia

3/22/2007 8:57:00 PM


This is my original OPEN ROWSET into temp database (works good):

SELECT MyDerivedTable.*
INTO tempdb.dbo.MyTable
FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Text Driver (*.txt;
*.csv)}; DefaultDir=C:\company folders\CorporateUpload;',
'select * from ContactList.csv') AS MyDerivedTable;

---- The logic stops at the last global statment (the OPENROWSET) -- should
I have a QUOTENAME for anything else here? Text rendered seems exact when
rendered.

DECLARE
@schemaname AS NVARCHAR(128),
@dbname as nvarchar(128),
@tablename AS NVARCHAR(128),
@DROPIT AS NVARCHAR(4000),
@WRITEIT AS NVARCHAR(4000);
SET @schemaname = N'dbo';
SET @dbname = N'tempdb';
SET @tablename = N'MyTable';

SET @DROPIT = N'DROP TABLE '
+ QUOTENAME(@dbname) + N'.'
+ QUOTENAME(@schemaname) + N'.'
+ QUOTENAME(@tablename) + N';'
/*
EXEC(@DROPIT);
*/
IF OBJECT_ID(QUOTENAME(@tablename))IS NOT NULL
EXEC @DROPIT;

SET @WRITEIT = N'SELECT MyDerivedTable.* INTO '
+ QUOTENAME(@dbname) + N'.'
+ QUOTENAME(@schemaname) + N'.'
+ QUOTENAME(@tablename) + N''
+ 'FROM OPENROWSET(' + '''' + 'MSDASQL' +''''+ ', ' + '''' +
'Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=C:\company
folders\CorporateUpload;' + '''' + ',' + '''' + ' select * from
ContactList.csv' + '''' + ') AS MyDerivedTable;'
---
note:
Other item needed: A COMMA DELIMITED FILE IS LOCATED IN C:\company
folders\CorporateUpload

1 Answer

Hugo Kornelis

3/23/2007 11:55:00 PM

0

On Thu, 22 Mar 2007 13:57:05 -0700, Claudia wrote:

(snip)
>---- The logic stops at the last global statment (the OPENROWSET) -- should
>I have a QUOTENAME for anything else here? Text rendered seems exact when
>rendered.

Hi Claudia,

See inline

>DECLARE
> @schemaname AS NVARCHAR(128),
> @dbname as nvarchar(128),
> @tablename AS NVARCHAR(128),
> @DROPIT AS NVARCHAR(4000),
> @WRITEIT AS NVARCHAR(4000);
>SET @schemaname = N'dbo';
>SET @dbname = N'tempdb';
>SET @tablename = N'MyTable';
>
>SET @DROPIT = N'DROP TABLE '
>+ QUOTENAME(@dbname) + N'.'
>+ QUOTENAME(@schemaname) + N'.'
> + QUOTENAME(@tablename) + N';'
>/*
>EXEC(@DROPIT);
>*/
>IF OBJECT_ID(QUOTENAME(@tablename))IS NOT NULL
>EXEC @DROPIT;

This should be EXEC (@DROPIT)

>SET @WRITEIT = N'SELECT MyDerivedTable.* INTO '
>+ QUOTENAME(@dbname) + N'.'
>+ QUOTENAME(@schemaname) + N'.'
> + QUOTENAME(@tablename) + N''
>+ 'FROM OPENROWSET(' + '''' + 'MSDASQL' +''''+ ', ' + '''' +
>'Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=C:\company
>folders\CorporateUpload;' + '''' + ',' + '''' + ' select * from
>ContactList.csv' + '''' + ') AS MyDerivedTable;'
>---
>note:
>Other item needed: A COMMA DELIMITED FILE IS LOCATED IN C:\company
>folders\CorporateUpload

If you have other problems with dynamic SQL, change the EXEC line to a
PRINT command. This way, you can visually inspect the SQL to be
executed.

Also, read http://www.sommarskog.se/dynami... for more
information aboout pros, cons, and dangers of dynamic SQL.

--
Hugo Kornelis, SQL Server MVP
My SQL Server blog: http://sqlblog.com/blogs/hug...