Dump values to table from file name

I have one file with name  locator_TestID.txt which contains data with fixed length which has to be loaded into table.

I have one table with two columns

create table TestLoad
( Locate VARCHAR(50),
  TestID VARCHAR(50))

Say i have text File   " HYD_NAT1204.TXT".  HYD should be inserted into Locate column and NAT1204 should be inserted into TestID column of table TestLoad.

Thanks in advance.



king0452Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

kmalhotraCommented:
If you know that the name of the file will always be in the same format. You can do it like this

Dim lstrFileName
'Fetch FileName
'In This case

lstrFileName = " HYD_NAT1204.TXT"
lstrTemp  = Split(lstrFileName, "_")
lstrLoc = lstrTemp [0]

lstrTempTestId =   lstrTemp[1]
lstrTestId = Replace(lstrTempTestId, ".txt", "")

After this you have the 2 parts of the filename into these 2 variabes lstrLoc and lstrTestID

'Now
lstrSQL = insert into TestLoad(locate, testid) values('" & lstrLoc & "','" & lstrTestId & "')"

run this query and you will be OK

Thanks
KM

0
appariCommented:

try this

SELECT substring('HYD_NAT1204.TXT',1,CHARINDEX('_', 'HYD_NAT1204.TXT')-1),
substring('HYD_NAT1204.TXT',CHARINDEX('_', 'HYD_NAT1204.TXT')+1,CHARINDEX('.', 'HYD_NAT1204.TXT')-1)
0
appariCommented:
try this one

SELECT substring('HYD_NAT1204.TXT',1,CHARINDEX('_', 'HYD_NAT1204.TXT')-1),
substring('HYD_NAT1204.TXT',CHARINDEX('_', 'HYD_NAT1204.TXT')+1,CHARINDEX('.', 'HYD_NAT1204.TXT')-CHARINDEX('_', 'HYD_NAT1204.TXT')-1)
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

HilaireCommented:
Hi king0452,

Your question history shows that you have 14 open questions out of a total of 20.
Sounds like it's cleanup time !

Regards

Hilaire
0
nigelrivettCommented:
0
king0452Author Commented:
The link below is similar.
http://www.nigelrivett.net/ImportTextFiles.html 

But i need the file name "HYD_NAT1204.TXT" of which the first three characters
"HYD" should be inserted into Column Locate and  and the next character after underscore "NAT1204" should be inserted into column TestID of table TestLoad



0
kmalhotraCommented:
Did you try my approach? I s there a problem with that?

KM
0
arbertCommented:
kmalhotra, your approach looks like VB script.  Where is the question asker suppose to run this?  Did you want him to create a DTS package?  
0
DexstarCommented:
@king0452:

> Say i have text File   " HYD_NAT1204.TXT".  HYD should be inserted into Locate
> column and NAT1204 should be inserted into TestID column of table TestLoad.

So you just want to insert the FILENAME into the table, and NOT the data in the file?  Then I would use this SQL code:

      DECLARE @strFileName VARCHAR(50)
      
      SET @strFileName = 'HYD_NAT1204.TXT'
      
      INSERT INTO TestLoad
      SELECT
            SUBSTRING(FileName, 1, UnderscorePos - 1),
            SUBSTRING(FileName, UnderscorePos + 1, DotPos - UnderscorePos - 1)
      FROM (SELECT @strFileName As FileName,
            CHARINDEX('_', @strFileName) As UnderscorePos,
            CHARINDEX('.', @strFileName) As DotPos) AS Data

You could wrap that up into a stored procedure, and make it really easy to work with.

Hope That Helps,
Dex*
0
king0452Author Commented:
Thanks Dexsta,it helps me a lot.

I have the file 'HYD_NAT1204.TXT' in the directory 'C:\DIRX\' . How to map to the directory and the file through script and use the file name, instead of directly assigning to string as
SET @strFileName = 'HYD_NAT1204.TXT' .



0
king0452Author Commented:
Thanks Dexsta,it helps me a lot.

I have the file 'HYD_NAT1204.TXT' in the directory 'C:\DIRX\' . How to map to the directory and the file through script and use the file name, instead of directly assigning to string as
SET @strFileName = 'HYD_NAT1204.TXT' .



0
DexstarCommented:
Heh?  Wouldn't that make 2 questions?  :P

No, seriously...  Do you want to list ALL the files in that directory?  If not, which files do you want?  If so, it would look like this:

-- Create a temporary table containing all the file names
CREATE TABLE #dir (dirLine VARCHAR(255))
INSERT INTO #dir
EXEC master..xp_cmdshell 'dir /b C:\DIRX\'

-- Process each file name and insert into table
INSERT INTO
      TestLoad
SELECT
      SUBSTRING(FileName, 1, UnderscorePos - 1),
      SUBSTRING(FileName, UnderscorePos + 1, DotPos - UnderscorePos - 1)
FROM (SELECT dirLine As FileName,
      CHARINDEX('_', dirLine + '_') As UnderscorePos,
      CHARINDEX('.', dirLine + '.') As DotPos FROM #dir) AS Data
WHERE
      DotPos > UnderscorePos

-- Remove the Temporary Table
DROP TABLE #dir

-- Display the records
SELECT * FROM TestLoad

How's that?
Dex*
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
DexstarCommented:
(I stole some of that code from one of ScottPletcher's posts in a different question...   But it sure is slick!)
0
king0452Author Commented:
This is urgent for me.

Thanks Dexstar. I have one more file with name "'HYD_NAT1204_RAJU_RAJU_20031211.txt"
three more columns were added to table

create table TestLoad
( Locate VARCHAR(50),
  TestID VARCHAR(50)
   Username varchar(20),
   password varchar(30),
   testdate datetime
)


Yours code gives the values for  locate and testId. How to populate the same for the other columns  with username as raju, password as raju and testdate as 20031211.

Thanks in advance for your great support .
0
DexstarCommented:
@king0452 :  I don't mean any disrespect, and I really want to help you out, but the rules are pretty clear about asking more than one question at a time:  http:/help.jsp#hi107

Post another question, and include a link to this question, and I'm sure you'll get an answer really quickly, even if it doesn't come from me.

Dex*
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.