How to import CSV to SQL Server 2005 w/o BCP? - sql

I am working on a ColdFusion (feel free to laugh) 8 site that that is hosted in a shared environment. The database and the web server are separate boxes. We don't have root access to either, and we don't have "exec xp_cmdshell" permission. SQL Server version is 2005.
So, what is the closest equivalent to BULK INSERT that we should try if we would like to efficiently import a CSV or other text file into the database--but without BCP or "format files"?
Obviously, we could just build a massive INSERT statement in ColdFusion, with UNION ALLs for each row, and run that. But is that the best option? Your thoughts?

Related

How to create SQL Server import template

For example I have daily Excel (xlsx) file, which I need to import every day in MS SQL Server Express 2014 which is located in localhost. Firstly Truncate the table.
How can I create some template to import Excel file into MS SQL server?
For example it will be in folder: C:\Reports\1.xlsx
For truncate I know the query:
USE [CompDB];
GO
TRUNCATE TABLE [dbo].[Report_table];
GO
I tried to find in MSSQL Import - Export wizard some templates option, haven't found it there. Moreover, I tried to do this with Toad for SQL Server, but there are no templates available in free version.
Or maybe you know how to do this with MySQL database? It will be better choice for me.
Try the OLEDB approach
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;HDR=NO;Database=C:\Data\Data.xlsx','SELECT * FROM [SheetName$]')
The parameters can vary depending on your Excel version, but I think this will work for you

Syntax for writing to a SQL Server table from SPSS

I just had an ODBC connection created between a SQL Server database and SPSS. I see a lot of threads about importing data FROM SQL Server into SPSS, but I am looking for syntax for writing TO the SQL Server database from SPSS.
Can anyone provide an example of an insert or update statement do to this? Thank you!
You can generate example syntax by using the wizard at File > Export to Database. Or look at SAVE TRANSLATE /TYPE=ODBC.
This is way kludgy, but you might be able to do this by installing pypyodbc, an odbc library for python, and then creating the records from within python.
The trick is to download pypyodbc and then deposit the file in SPSS python library folder (mine is C:\Program Files\IBM\SPSS\Statistics\22\Python\Lib). From there, you can import pypyodbc and execute sql statements from within a syntax file.

Sql: export database using TSQL

I have database connection to database DB1. The only thing I could do - execute any t-sql statements including using stored procedures. I want to export the specific table (or even the specific rows of specific table) to my local database. As you can read abve, DBs are on diffrent servers meaning no direct connection is possible. Therefore question: Is it possible to write query that returns the other query to execute on local server and get data? Also note, that table contains BLOBs. Thanks.
If you have SQL Server Management Studio, you can use the data import function on your local database to get the data. It works as long as you have Read/Select access on the tables you are trying to copy.
If you have Visual Studio you can use the database tools in there to move data between two servers as long as you can connect to both from your workstation.
Needs Ultimate or Premium though:
http://msdn.microsoft.com/en-us/library/dd193261.aspx
RedGate has some usefull tools too:
http://www.red-gate.com/products/sql-development/sql-compare/features
Maybe you should ask at https://dba.stackexchange.com/ instead.
If you can login to the remote db (where you can only issue t-sql), you may create linked server on your local server to the remote and use it later directly in queries, like:
select * from [LinkedServerName].[DatabaseName].[SchemaName].[TableName]

How do I make a script in SQL Management Studio 2005?

I have a table in an MS SQL Server db. I want to create a script that will put the table and all records into another db. So I right-click the table in Management Studio and select Create-To new query editor... but all I get is the table structure.
How exactly do I get the values too?
One of the things I really like about the tools for MySQL that SQL Server is missing out of the box to be certain.
You can use a script to do it however.
You might also want to consider using something like Red-Gate SQL Compare and Red-Gate SQL Data Compare. They aren't cheap tools, priced at $395 each (for the standard editions), but there are 14 day free trials available for download, and they make copying schema and data from one SQL Server to another very easy.
If both are on the same machine (or on different machines but the servers are linked)
you can create the table with the script you can generate automatically and do this to copy the data:
INSERT INTO [destinationdb].[dbo].[destinationtable] SELECT *
FROM [originaldb].[dbo].[originaltable]
(Prepend [servername] to the database name if you'll be using linked servers)
Another option is to enable xp_cmdshell (do with care, it's relaxing security constraints) and use the bcp command line utility from the management studio to create copies you can then import into the other database/server. You can do that directly from the shell as well and do not need to enable xp_cmdshell in that case, of course.
it doesn't really create a "SQL script" but it does the job :
select the database in the object explorer
right click
select import/export data
follow the wizard
at the end of the process you can save the "integration service package" to reuse it
later you can modify the details by opening the .dtsx
(it will take care of security, and won't cost one more penny, it's seems we have to compete with other answers :) )
hope it helps.

SQL Server 2005 - Export table programmatically (run a .sql file to rebuild it)

I have a database with a table Customers that have some data
I have another database in the office that everything is the same, but my table Customers is empty
How can I create a sql file in SQL Server 2005 (T-SQL) that takes everything on the table Customers from the first database, creates a, let's say, buildcustomers.sql, I zip that file, copy it across the network, execute it in my SQL Server and voila! my table Customers is full
How can I do the same for a whole database?
This functionality is already built in to Sql Server Management Studio 2008.
Just download the trial and only install the client tools (which shouldn't expire). Use Management Studio 2008 to connect to your 2005 database (its backwards compatible).
Right click your database
Choose Tasks > Generate Scripts
Press Next, select your database again
On the 'Choose Script Options' screen, there is an option called Script Data which will generate SQL insert statements for all your data.
(Note: for SQL Server Management Studio 2008 R2, the option is called "Types of data to script" and is the last one in the General section. The choices are "data only", "schema and data", and "schema only")
Use bcp (from the command line) to a networked file and then restore it.
e.g.
bcp "SELECT * FROM CustomerTable" queryout "c:\temp\CustomerTable.bcp"
-N -S SOURCESERVERNAME -T
bcp TargetDatabaseTable in "c:\temp\CustomerTable.bcp" -N -S TARGETSERVERNAME -T
-N use native types
-T use the trusted connection
-S ServerName
Very quick and easy to embed within code. (I've built a database backup(restore) system around this very command.
You can check the following article to see how you can do this by using both SQL Server native tools and the third party tools: SQL Server bulk copy and bulk import and export techniques
Disclaimer: I work for ApexSQL as a Support Engineer
Hope this helps
You could always export the data from the Customers table to an Excel file and import that data into your Customers table.
To import/export data:
Right click on database
Go to Tasks
Go to Import Data or Export Data
Change the data source to Microsoft Excel
Follow the wizard
If both databases resides in the same instance of SQL Server, ie use same connection, this SQL might be helpful:
INSERT INTO [DestinationDB].[schema].[table] ([column])
SELECT [column] FROM [OriginDB].[schema].[table]
GO
For Data Expoer as SQL script in SQL server 2005,
http://blog.sqlauthority.com/2007/11/16/sql-server-2005-generate-script-with-data-from-database-database-publishing-wizard/
I just like to add some screen shoots for Sql Server Management Studio 2008. It is correct to use the steps describe previously. When you have the 'Generate and Publish Script' -> 'Set Script Options' then press Advance to see script options:
![Where to find Advanced script options]: image missing because I do not have the right reputation :(
For Sql Server Management Studio 2008 the option to included data is 'Types of data to script'
![Types of data to script]: image missing because I do not have the right reputation :(