How to import tab delimited text file into a SQL table?

I want to import/ bulk load a tab delimited .txt that is attached below this line directly into a SQL Table.
MJOTestSummariesTabDelimited.txt
I have been thru this process with fixed length text files and I'm wondering what the difference would be in the FormatFile for the tab delimited file.
The input fixed length file did not have column headings as the first line in the file.  I can generate the tab delimited file with or without the first row being column headings.  Whichever works best.  Is one way or the other best?
The format file I developed to import the fixed length file looks something like this:
[code]12.0
11
1       SQLCHAR       0       30        ""        1    CostName        ""             
2       SQLCHAR       0       4         ""        2    MiniCode        ""
3       SQLCHAR       0       17        ""        3    LotBlock        ""
4       SQLCHAR       0       1         ""        4    TaxType         ""
5       SQLCHAR       0       4         ""        5    MiniCode02      ""
6       SQLCHAR       0       7         ""        6    ControlNumber   ""
7       SQLCHAR       0       1         ""        7    TaxType02       ""
8       SQLCHAR       0       14000     ""        8    CostDetail      ""
9       SQLCHAR       0       30        ""        9    GRBNumber       ""
10      SQLCHAR       0       30        ""        10   GDNNumber       ""
11      SQLCHAR       0       75        "\r\n"    11   Remarks         ""

Open in new window

[/code]
]

I want to import the tab delimited file I attached above into a SQL table defined like this:
REATE TABLE [dbo].[Balance_Import](
      [SkipOrig] [nvarchar](255) NULL,
      [Skip] [nvarchar](255) NULL,
      [LegalFlagC] [nvarchar](255) NULL,
      [TaxType] [int] NULL,
      [BlockLot] [nvarchar](255) NULL,
      [TieBreaker] [nchar](10) NULL,
      [Full_Int_Add_TypeID] [int] NULL,
      [SequenceNo] [int] NULL,
      [Priority] [float] NULL,
      [MuniCode] [int] NULL,
      [Owner] [nvarchar](255) NULL,
      [Addr1] [nvarchar](255) NULL,
      [Addr2] [nvarchar](255) NULL,
      [Addr3] [nvarchar](255) NULL,
      [Year] [float] NULL,
      [EnterDate] [nvarchar](255) NULL,
      [IntDate] [nvarchar](255) NULL,
      [Face] [float] NULL,
      [Penalty] [float] NULL,
      [Interest] [float] NULL,
      [Cost] [float] NULL,
      [Comm] [float] NULL,
      [TotalDue] [float] NULL,
      [Pmts] [float] NULL,
      [Balance] [float] NULL,
      [Area1] [nvarchar](255) NULL,
      [Area2] [nvarchar](255) NULL,
      [FacePaid] [float] NULL,
      [PltyPaid] [float] NULL,
      [IntPaid] [float] NULL,
      [CostPaid] [float] NULL,
      [CommPaid] [float] NULL,
      [SoldFlag] [float] NULL,
      [PostageExpenses] [float] NULL,
      [AttyFees] [float] NULL,
      [RecordCosts] [float] NULL,
      [FaceBal] [float] NULL,
      [IntBal] [float] NULL,
      [PltyBal] [float] NULL,
      [CostBal] [float] NULL,
      [CommBal] [float] NULL,
      [BalDueWithoutExpenses] [float] NULL,
      [BalDueWithExpenses] [float] NULL,
      [ID] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Obviously my field names, data types and lengths may be different but how else would it change from the fixed length FormatFile?  An example would be excellent.
LVL 1
mlcktmguyAsked:
Who is Participating?
 
Mark WillsTopic AdvisorCommented:
Yep, Scott is quite correct use \t as your delimiter in your format file (much the same way as you have used \r\n)

Then it is the same as your fixed width imports using OPENROWSET.

But, there is more to it than that. You have quote encapsulated columns, so you are probably best off creating a schema file

So while you can do
select * FROM OPENROWSET( BULK 'c:\mrwtest\ee\MJOTestSummariesTabDelimited.txt', firstrow = 2, FORMATFILE = 'c:\mrwtest\ee\balance_import_format.txt') as a

Open in new window

and use my formatfile attached.... Nothing matches in your samples sorry to say.

You are better off not using a format file, but create a schema.ini file in your import directory and use
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text; HDR=YES; Database=c:\mrwtest\ee','SELECT * FROM MJOTestSummariesTabDelimited.txt')

Open in new window

Then in the 'database' directory, ie In In C:\mrwtest\ee you create a schema file C:\mrwtest\ee\schema.ini:
[MJOTestSummariesTabDelimited.txt]
ColNameHeader=True
Format=TabDelimited

Open in new window

Also, I had to create a working table. Too many errors / inconsistencies so made my own to correspond to the actual import file
create table wrk_balance_import (SkipOrig varchar(100), Skip varchar(100), LegalFlagC varchar(100), BlockLot varchar(100), Priority varchar(100), MuniCode varchar(100), Owner varchar(100), Addr1 varchar(100), Addr2 varchar(100), Addr3 varchar(100), Year varchar(100), Enter_Date varchar(100), Int_Date varchar(100), Face varchar(100), Penalty varchar(100), Interest varchar(100), Cost varchar(100), Comm varchar(100), Total_Due varchar(100), Pmts varchar(100), Balance varchar(100), Area1 varchar(100), Area2 varchar(100), FacePaid varchar(100), PltyPaid varchar(100), IntPaid varchar(100), CostPaid varchar(100), CommPaid varchar(100), SoldFlag varchar(100), PostageExpenses varchar(100), AttyFees varchar(100), RecordCosts varchar(100), FaceBal varchar(100), IntBal varchar(100), PltyBal varchar(100), CostBal varchar(100), CommBal varchar(100), BalDueWithoutExpenses varchar(100), BalDueWithExpenses varchar(500))

Open in new window

balance_Import_format.txt
0
 
Scott PletcherSenior DBACommented:
You'd need to change the delimiter to "\t" (tab) rather than leaving it empty, as it is for a fixed-length file.  
Be sure to specify NCHAR where needed rather than CHAR.
For [n]varchar, you should need to specify a prefix length (the number before the max length) of 2 rather than 0.
0
 
mlcktmguyAuthor Commented:
Thanks, this is what I came up with but I wasn't sure of the data type for 'Float' fields.  Obviously what I chose was wrong.  I also wasn't too sure on the length for the Int for float fields.

Should I remove the column heading from the input tab delimited fiel?

12.0
42
1        SQLNCHAR      2       255       "\t"        1     SkipOrig ""             
2        SQLNCHAR      2       255       "\t"        2     Skip      ""             
3        SQLNCHAR      2       255       "\t"        3     LegalFlagC      ""             
4        SQLINT        0       12        "\t"        4     TaxType      ""             
5        SQLNCHAR      2       255       "\t"        5     BlockLot      ""             
6        SQLNCHAR      2       10        "\t"        6     TieBreaker      ""             
7        SQLINT        0       12        "\t"        7     Full_Int_Add_TypeID      ""             
8        SQLINT        0       12        "\t"        8     SequenceNo      ""             
9        SQLFLOAT      0       30        "\t"        9     Priority      ""             
10       SQLNCHAR      2       255       "\t"        10    Owner      ""             
11       SQLNCHAR      2       255       "\t"        11    Addr1      ""             
12       SQLNCHAR      2       255       "\t"        12    Addr2      ""             
13       SQLNCHAR      2       255       "\t"        13    Addr3      ""             
14       SQLINT        0       12        "\t"        14    Year      ""             
15       SQLNCHAR      2       255       "\t"        15    EnterDate     ""             
16       SQLNCHAR      2       255       "\t"        16    IntDate      ""             
17       SQLFLOAT      0       30        "\t"        17    Face      ""             
18       SQLFLOAT      0       30        "\t"        18    Penalty      ""             
19       SQLFLOAT      0       30        "\t"        19    Interest     ""             
20       SQLFLOAT      0       30        "\t"        20    Cost      ""             
21       SQLFLOAT      0       30        "\t"        21    Comm      ""             
22       SQLFLOAT      0       30        "\t"        22    TotalDue      ""             
23       SQLFLOAT      0       30        "\t"        23    Pmts      ""             
24       SQLFLOAT      0       30        "\t"        24    Balance     ""             
25       SQLNCHAR      2       255       "\t"        25    Area1      ""             
26       SQLNCHAR      2       255       "\t"        26    Area2      ""             
27       SQLFLOAT      0       30        "\t"        27    FacePaid      ""             
28       SQLFLOAT      0       30        "\t"        28    PltyPaid      ""
29       SQLFLOAT      0       30        "\t"        29    IntPaid      ""             
30       SQLFLOAT      0       30        "\t"        30    CostPaid      ""             
31       SQLFLOAT      0       30        "\t"        31    CommPaid      ""             
32       SQLFLOAT      0       30        "\t"        32    SoldFlag      ""             
33       SQLFLOAT      0       30        "\t"        33    PostageExpenses      ""             
34       SQLFLOAT      0       30        "\t"        34    AttyFees      ""             
35       SQLFLOAT      0       30        "\t"        35    RecordCosts      ""             
36       SQLFLOAT      0       30        "\t"        36    FaceBal      ""             
37       SQLFLOAT      0       30        "\t"        37    IntBal      ""             
38       SQLFLOAT      0       30        "\t"        38    PltyBal      ""             
39       SQLFLOAT      0       30        "\t"        39    CostBal      ""             
40       SQLFLOAT      0       30        "\t"        40    CommBal      ""             
41       SQLFLOAT      0       30        "\t"        41    BalDueWithoutExpenses      ""             
42      SQLFLOAT      0       30        "\r\n"       42    BalDueWithExpenses         ""

Open in new window


I am getting an error
Msg 4824, Level 16, State 1, Line 2
Cannot bulk load. Invalid data type for column number 9 in the format file "I:\My Documents\Access_Databases\JordanDelinq\TestDirectory\SQLImportFormatFiles\Balance_TabDelimited_Import.txt".
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.

 
Scott PletcherSenior DBACommented:
In the format file, I believe you use "char" for ints/floats (unless you created the file in native/binary format, which is extremely unlikely).

I think the lengths are fine (12 for int, 30 for float).

I've used format files quite a bit.  They are a royal pain to get working, but once they work, they usually work well.
0
 
mlcktmguyAuthor Commented:
Thanks Scott and Mark:  I tired to implement your suggestions but without much success.  Here's what I tired, along with the error message:

Scott:
I revised my FORMATFile to be :
12.0
43
1        SQLNCHAR      2       255       "\t"        1     SkipOrig ""             
2        SQLNCHAR      2       255       "\t"        2     Skip      ""             
3        SQLNCHAR      2       255       "\t"        3     LegalFlagC      ""             
4        SQLCHAR       0       12        "\t"        4     TaxType      ""             
5        SQLNCHAR      2       255       "\t"        5     BlockLot      ""             
6        SQLNCHAR      2       10        "\t"        6     TieBreaker      ""             
7        SQLCHAR       0       12        "\t"        7     Full_Int_Add_TypeID      ""             
8        SQLCHAR       0       12        "\t"        8     SequenceNo      ""             
9        SQLCHAR       0       30        "\t"        9     Priority      "" 
10        SQLCHAR      0       12        "\t"        10     MuniCode      ""             
11       SQLNCHAR      2       255       "\t"        11    Owner      ""             
12       SQLNCHAR      2       255       "\t"        12    Addr1      ""             
13       SQLNCHAR      2       255       "\t"        13    Addr2      ""             
14       SQLNCHAR      2       255       "\t"        14    Addr3      ""             
15       SQLCHAR       0       12        "\t"        15    Year      ""             
16       SQLNCHAR      2       255       "\t"        16    EnterDate     ""             
17       SQLNCHAR      2       255       "\t"        17    IntDate      ""             
18       SQLCHAR       0       30        "\t"        18    Face      ""             
19       SQLCHAR       0       30        "\t"        19    Penalty      ""             
20       SQLCHAR       0       30        "\t"        20    Interest     ""             
21       SQLCHAR       0       30        "\t"        21    Cost      ""             
22       SQLCHAR       0       30        "\t"        22    Comm      ""             
23       SQLCHAR       0       30        "\t"        23    TotalDue      ""             
24       SQLCHAR       0       30        "\t"        24    Pmts      ""             
25       SQLCHAR       0       30        "\t"        25    Balance     ""             
26       SQLNCHAR      2       255       "\t"        26    Area1      ""             
27       SQLNCHAR      2       255       "\t"        27    Area2      ""             
28       SQLCHAR       0       30        "\t"        28    FacePaid      ""             
29       SQLCHAR       0       30        "\t"        29    PltyPaid      ""
30       SQLCHAR       0       30        "\t"        30    IntPaid      ""             
31       SQLCHAR       0       30        "\t"        31    CostPaid      ""             
32       SQLCHAR       0       30        "\t"        32    CommPaid      ""             
33       SQLCHAR       0       30        "\t"        33    SoldFlag      ""             
34       SQLCHAR       0       30        "\t"        34    PostageExpenses      ""             
35       SQLCHAR       0       30        "\t"        35    AttyFees      ""             
36       SQLCHAR       0       30        "\t"        36    RecordCosts      ""             
37       SQLCHAR       0       30        "\t"        37    FaceBal      ""             
38       SQLCHAR       0       30        "\t"        38    IntBal      ""             
39       SQLCHAR       0       30        "\t"        39    PltyBal      ""             
40       SQLCHAR       0       30        "\t"        40    CostBal      ""           
41       SQLCHAR       0       30        "\t"        41    CommBal      ""             
42       SQLCHAR       0       30        "\t"        42    BalDueWithoutExpenses      ""             
43       SQLCHAR       0       30        "\r\n"      43    BalDueWithExpenses         ""

Open in new window

Executed this statement
select * FROM OPENROWSET( BULK 'I:\My Documents\Access_Databases\JordanDelinq\TestDirectory\Balances\MJOTestSummariesTabDelimited.txt', firstrow = 2,
FORMATFILE = 'I:\My Documents\Access_Databases\JordanDelinq\TestDirectory\SQLImportFormatFiles\Balance_TabDelimited_Import_try02.txt') as a

and got errors
Msg 4866, Level 16, State 7, Line 7
The bulk load failed. The column is too long in the data file for row 1, column 1. Verify that the field terminator and row terminator are specified correctly.
Msg 7301, Level 16, State 2, Line 7
Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".

Mark I first tried revising the FORMATFILE example you supplied to:
12.0
43
1       SQLCHAR             0       100     "\t"     1     SkipOrig                                       Latin1_General_CI_AS
2       SQLCHAR             0       100     "\t"     2     Skip                                           Latin1_General_CI_AS
3       SQLCHAR             0       100     "\t"     3     LegalFlagC                                     Latin1_General_CI_AS
4       SQLCHAR             0       100     "\t"     4     TaxType                                        Latin1_General_CI_AS
5       SQLCHAR             0       100     "\t"     5     BlockLot                                       Latin1_General_CI_AS
6       SQLCHAR             0       100     "\t"     6     TieBreaker                                     Latin1_General_CI_AS
7       SQLCHAR             0       100     "\t"     7     Full_Int_Add_TypeID                            Latin1_General_CI_AS
8       SQLCHAR             0       100     "\t"     8     SequenceNo                                     Latin1_General_CI_AS
9       SQLCHAR             0       100     "\t"     9     Priority                                       Latin1_General_CI_AS
10      SQLCHAR             0       100     "\t"     10    MuniCode                                       Latin1_General_CI_AS
11      SQLCHAR             0       100     "\t"     11    Owner                                          Latin1_General_CI_AS
12      SQLCHAR             0       100     "\t"     12    Addr1                                          Latin1_General_CI_AS
13      SQLCHAR             0       100     "\t"     13    Addr2                                          Latin1_General_CI_AS
14      SQLCHAR             0       100     "\t"     14    Addr3                                          Latin1_General_CI_AS
15      SQLCHAR             0       100     "\t"     15    Year                                           Latin1_General_CI_AS
16      SQLCHAR             0       100     "\t"     16    Enter_Date                                     Latin1_General_CI_AS
17      SQLCHAR             0       100     "\t"     17    Int_Date                                       Latin1_General_CI_AS
18      SQLCHAR             0       100     "\t"     18    Face                                           Latin1_General_CI_AS
19      SQLCHAR             0       100     "\t"     19    Penalty                                        Latin1_General_CI_AS
20      SQLCHAR             0       100     "\t"     20    Interest                                       Latin1_General_CI_AS
21      SQLCHAR             0       100     "\t"     21    Cost                                           Latin1_General_CI_AS
22      SQLCHAR             0       100     "\t"     22    Comm                                           Latin1_General_CI_AS
23      SQLCHAR             0       100     "\t"     23    Total_Due                                      Latin1_General_CI_AS
24      SQLCHAR             0       100     "\t"     24    Pmts                                           Latin1_General_CI_AS
25      SQLCHAR             0       100     "\t"     25    Balance                                        Latin1_General_CI_AS
26      SQLCHAR             0       100     "\t"     26    Area1                                          Latin1_General_CI_AS
27      SQLCHAR             0       100     "\t"     27    Area2                                          Latin1_General_CI_AS
28      SQLCHAR             0       100     "\t"     28    FacePaid                                       Latin1_General_CI_AS
29      SQLCHAR             0       100     "\t"     29    PltyPaid                                       Latin1_General_CI_AS
30      SQLCHAR             0       100     "\t"     30    IntPaid                                        Latin1_General_CI_AS
31      SQLCHAR             0       100     "\t"     31    CostPaid                                       Latin1_General_CI_AS
32      SQLCHAR             0       100     "\t"     32    CommPaid                                       Latin1_General_CI_AS
33      SQLCHAR             0       100     "\t"     33    SoldFlag                                       Latin1_General_CI_AS
34      SQLCHAR             0       100     "\t"     34    PostageExpenses                                Latin1_General_CI_AS
35      SQLCHAR             0       100     "\t"     35    AttyFees                                       Latin1_General_CI_AS
36      SQLCHAR             0       100     "\t"     36    RecordCosts                                    Latin1_General_CI_AS
37      SQLCHAR             0       100     "\t"     37    FaceBal                                        Latin1_General_CI_AS
38      SQLCHAR             0       100     "\t"     38    IntBal                                         Latin1_General_CI_AS
39      SQLCHAR             0       100     "\t"     39    PltyBal                                        Latin1_General_CI_AS
40      SQLCHAR             0       100     "\t"     40    CostBal                                        Latin1_General_CI_AS
41      SQLCHAR             0       100     "\t"     41    CommBal                                        Latin1_General_CI_AS
42      SQLCHAR             0       100     "\t"     42    BalDueWithoutExpenses                          Latin1_General_CI_AS
43      SQLCHAR             0       500     "\r\n"   43    BalDueWithExpenses                             Latin1_General_CI_AS

Open in new window


and ran the statement
select * FROM OPENROWSET( BULK 'I:\My Documents\Access_Databases\JordanDelinq\TestDirectory\Balances\MJOTestSummariesTabDelimited.txt', firstrow = 2,
FORMATFILE = 'I:\My Documents\Access_Databases\JordanDelinq\TestDirectory\SQLImportFormatFiles\Balance_TabDelimited_Import_MArkW01.txt') as a

It generated these errors
Msg 4832, Level 16, State 1, Line 12
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 12
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 12
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

Open in new window


I finally tried using the Schema.Ini approach
My Schema
[MJOLibrary Summaries_TabDelim.txt]
ColNameHeader=True
Format=TabDelimited

Open in new window


executed
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text; HDR=YES; Database=I:\My Documents\Access_Databases\JordanDelinq\TestDirectory\Balances',
'SELECT * FROM MJOLibrary Summaries_TabDelim.txt')

which threw the error
Msg 7302, Level 16, State 1, Line 28
Cannot create an instance of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

Mark,
When I tried the ACE OLEDB 12.0 approach to load the native spreadsheet I think I got the same error due to not having the 64-bit version of Office installed.  Perhaps that's stopping me again after I exported the native spreadsheet to a tab delimited txt file.
0
 
Mark WillsTopic AdvisorCommented:
The Test data file did have a funny blank row at the end.

I was getting that error too until I got rid of the line, and analysed the columns. See if the attached gives any different results

there are only 39 fields.... and could be the reason why you get the errors - you have added 4 more which will push a row definition beyond the file limits

The "Microsoft.ACE.OLEDB.12.0" error is probably correctly identified as the mismatch between 64 bit SQL and 32 bit Officce.

If you dont use that driver for Office, then worthwhile replacing it with 64bit.

MJOTestSummariesTabDelimited.txt
MJOTestSummariesTabDelimited---Copy.xlsx
0
 
mlcktmguyAuthor Commented:
As you already know and I just figured out, you are absolutely correct, 39 fields.

When I adopted your 39 field FileFormat it pulled right in.

You are also correct about the quote encapsulated columns and they are imported with the quotes surrounding them.  The only one I see like that is 'Owner' and I don't use it in any of my processing.  In fact I could skip them in the import.  I don't use columns Owner, Addr1, Addr2, Addr3, area1 or Area2.

I know it's possible to skip those columns from being imported but I don't remember if you just remove the lines for those fields from the format file or remove them and re-sequence the numbers.

How do I revise the format file to skip those columns.
0
 
Mark WillsTopic AdvisorCommented:
Well you can put a zero in the second column of positions (just before the column name), but I wouldnt. That often leads to having to spell out column names in the insert, and the select anyway...

Import into the wrk_balance_import definition that matches the the data file. Use it as a staging table. No indexes will keep it minimally logged if you create it afresh.

Dont try to get too tricky with importing data - first goal is to get the data into SQL Server. Once you have the data, use the power of SQL Server to do the hard yards of manipulation, transformation, and finding a "real" home for the new data.

Thats why you will find most seasoned experts recommending a staging table in these types of scenarios.

Now, it is also reasonable to use a temp table, but, with an actual staging table, the data is actually there and you can then take your time and/or run various procedures / functions / tests and checks for data integrity without having to do everything immediately within the scope of the temporary table.
If object_id('wrk_balance_import','u') is not null drop table wrk_balance_import

create table wrk_balance_import (SkipOrig varchar(100), Skip varchar(100), LegalFlagC varchar(100), BlockLot varchar(100), Priority varchar(100), MuniCode varchar(100), Owner varchar(100), Addr1 varchar(100), Addr2 varchar(100), Addr3 varchar(100), Year varchar(100), Enter_Date varchar(100), Int_Date varchar(100), Face varchar(100), Penalty varchar(100), Interest varchar(100), Cost varchar(100), Comm varchar(100), Total_Due varchar(100), Pmts varchar(100), Balance varchar(100), Area1 varchar(100), Area2 varchar(100), FacePaid varchar(100), PltyPaid varchar(100), IntPaid varchar(100), CostPaid varchar(100), CommPaid varchar(100), SoldFlag varchar(100), PostageExpenses varchar(100), AttyFees varchar(100), RecordCosts varchar(100), FaceBal varchar(100), IntBal varchar(100), PltyBal varchar(100), CostBal varchar(100), CommBal varchar(100), BalDueWithoutExpenses varchar(100), BalDueWithExpenses varchar(500))

insert wrk_balance_import
select * FROM OPENROWSET( BULK 'c:\mrwtest\ee\MJOTestSummariesTabDelimited.txt', firstrow = 2, FORMATFILE = 'c:\mrwtest\ee\balance_import_format.txt') as a

-- or use a temp table if you are working on it immediately...

select * into #wrk_balance_import FROM OPENROWSET( BULK 'c:\mrwtest\ee\MJOTestSummariesTabDelimited.txt', firstrow = 2, FORMATFILE = 'c:\mrwtest\ee\balance_import_format.txt') as a

Open in new window

clearly the actual definition of the staging table (ie column sizes) can be fine tuned to be a more realistic size - varchar(100) would be a very generic starting point to simply accommodate data.
0
 
mlcktmguyAuthor Commented:
Thanks once again Mark.  I posted another question on the Dynamic SQL answer you provided me with about a week ago.  I need to revise it to import starting on the second line for the balance file.
This is the question:  Dynamic SQL Question.  Probably a very easy one for you.
0
 
mlcktmguyAuthor Commented:
Thank you
0
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.

All Courses

From novice to tech pro — start learning today.