|
I could rename the columns before hand, but the information that is being inserted is being retrieved from a CSV file into a DataTable. I'm not sure how I could pass that table directly into the SQL Server to do the SELECT INTO. Also there is a need to do some pre-processing on each record before it's inserted.
I figured just creating the table upfront would be the simpliest route, even if it's not the quickest route. But I'm open to suggestions. The pre-processing could always be done post insert.
|
|
|
|
|
I think your solution works fine even if you do the table first and then insert the rows. But to answer your questions:
Sunset Towers wrote: the information that is being inserted is being retrieved from a CSV file
If the CSV file can be opened by SQL Server (it resides on a disk that SQL Server can see), you could use SELECT INTO ... OPENROWSET combination. In that case you would give reasonable names to the selected columns in the select statement and the table will be created at the same time as it's populated. For more info, see: OPENROWSET[^].
Sunset Towers wrote: I'm not sure how I could pass that table directly into the SQL Server to do the SELECT INTO
If you mean the table where the data goes, you don't have to, since it's created on-the-fly. If you mean the datatable, there's an article I wrote about this: How to pass multiple records to a Stored Procedure[^].
Sunset Towers wrote: Also there is a need to do some pre-processing on each record before it's inserted
Perhaps another option could be that you first insert the data to the table and instead of pre-processing, you load the data 'as-is' and modify it in the table after it's populated (especially if the table you create is used just for loading). Don't know if this is possible or reasonable in your case.
Anyhow, you can create the table using stored procedure and then fill it from client side and use procedure to reduce the number of roundtrips if you want.
By the way, did the first reply resolve your table creation problem?
|
|
|
|
|
I have this nasty situation and have to use SSIS - not control, no user to mediate the import, columns that change, additional datefrom/to columns added so the shape was the same just additional sets of from/to. I did the following:
Read the CSV into a table in the UI
Create a CSV string of the column headers making sure they are unique (dupe datefrom fields) by adding # to the field names
Pass the CSV string to a stored proc that drops and recreates the table if the columns are different. All columns are created as varchar(200)
Bulkcopy the table into the SQL table
Use a proc to move the data from the staging table to where it will be used.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi Guys, I have this weird problem... I installed SQL Server 2008 Enterprise on a Windows 2008 (x64) virtual server the other day. The installation wizard did his thing and everything went well, except that when all was done, I realized Management Studio was not there!! I looked in all related directories, checked the installed components, but that darn Management Studio was not installed!
Does anyone know how I can get that installed seperately? Has anyone encountered that problem?
Thanks
Green Grape
|
|
|
|
|
Haven't installed 2008 enterprise yet, but if it acts like previous versions, you must include the Management Studio during installation. By default it's not installed. Re-run the setup and check if there's an option you can include. Something like Client tools etc.
|
|
|
|
|
Thanks Mika- I will give it a try Hopefully it will work!
Green Grape
|
|
|
|
|
No problem
|
|
|
|
|
I think it may be here on your installation DVD:
x64\Setup\sql_ssms.msi
this is setup of SqlServer Management Studio
Human knowledge belongs to the world
|
|
|
|
|
Hello everyone,
I an new to begin try/end try and begin catch/end catch. Could anyone recommend me some tutorials for a beginner?
My background is, I wrote T-SQL before, but not too much, I have never used begin try/end try and begin catch/end catch.
thanks in advance,
George
|
|
|
|
|
|
Good stuff, thanks Mika!
regards,
George
|
|
|
|
|
|
Good stuff, thanks Hamid!
regards,
George
|
|
|
|
|
Hello everyone,
Any ideas what is the differences between GETUTCDATE and GETDATE? And when to apply GETUTCDATE and when to apply GETDATE?
thanks in advance,
George
|
|
|
|
|
getutcdate means : Coordinated Universal Time
and return universal time regardless your time zone
but getdate return time based on your time zone:
<br />
SELECT 'SYSDATETIME() ', SYSDATETIME();<br />
SELECT 'SYSDATETIMEOFFSET()', SYSDATETIMEOFFSET();<br />
SELECT 'SYSUTCDATETIME() ', SYSUTCDATETIME();<br />
SELECT 'CURRENT_TIMESTAMP ', CURRENT_TIMESTAMP;<br />
SELECT 'GETDATE() ', GETDATE();<br />
SELECT 'GETUTCDATE() ', GETUTCDATE();<br />
<br />
Human knowledge belongs to the world
|
|
|
|
|
Thanks Reza,
Could I understand GETDATE returns machine local time?
regards,
George
|
|
|
|
|
George_George wrote: Could I understand GETDATE returns machine local time?
GetDate() returns current date of your sqlserver machine(means the server where your sqlserver installed)
Human knowledge belongs to the world
|
|
|
|
|
Thanks Reza!
regards,
George
|
|
|
|
|
GETUTCDATE returns current date of the system in UTC time (Greenwich Mean Time) while GETDATE return current time in the timezone where the system is working.
|
|
|
|
|
Thanks Mika!
regards,
George
|
|
|
|
|
You're welcome
|
|
|
|
|
For pete's sake george your questions are becoming more asanine by the day.
What the bloody hell do you think the difference would be given the method names are very explicit.
|
|
|
|
|
Thanks J4amieC,
I appreciate people'e help here. I am a newbie.
regards,
George
|
|
|
|
|
George_George wrote: I am a newbie.
You dont say?!
However, newbie aside, one of the most important skills you must learn if you want to work in this profession is how to look thinks up.... wait, im wasting my time again! You've had this point explained ad infinitum.
|
|
|
|
|
Sorry for any in-convenience, J4amieC!
I am catching-up with SQL Server soon.
regards,
George
|
|
|
|