Subject |
Re: character string problem |
From |
Charlie <tm@tc.com> |
Date |
Sun, 17 Mar 2019 09:54:41 -0400 |
Newsgroups |
dbase.getting-started |
Hi Mervyn.. It is possible that I have some single quotes but probably not as many. Although sometimes they describe passenger cars by feet (') also. I was wondering if you could use ^ or | to enclose. I think I have seen them before. Although I believe they replaced the comma. Isn't the comma the delimiter and ( ") the enclosure? I'm confused. If you use copy to file with ^ it changes the comma.
I believe the program you attached is not complete. It seems to end abruptly.
Thanks much!!!
Mervyn Bick Wrote:
> On 2019-03-17 9:38 AM, Charlie wrote:
> > Oh boy.. I had meant to paste the line in but must have forgotten to.
> >
> > I am at the point where I was able to get the entire table imported after around a half hour of deleting double quotes.
> >
> > But the code you gave me is working as there are fewer instances.
> >
> > It seems like the problem happened mainly at the very end of the row of the field. It happened much more in the title field than the au_desc row.
> >
> > It made no sense to me as it looked like this (from memory):
> >
> > "blah blah blah\""
> >
> > I would have to delete one of the double quotes and it was OK. Most of the rows were corrected and looked like this i think:
> >
> > "blah blah blah\"
> >
> > So I'm not sure if i am supposed to be able to see the \.
> >
> > I do plan on updating the page fairly frequently so it would be nice to find a resolve. Now that it works I'd like to leave it there for a while for testing but I may well go through the correction process again to try to figure out more of what is happening if needed.
> >
> > So if you would like an idea of what it looks like it is at traincity.com/guide.php and is working although isn't finished yet.
>
> It depends on exactly how you are uploading the .csv file to MySql but,
> speaking generally, when you upload a string literal to a SQL server any
> quotes in the literal that are also used to delimit the literal must be
> "escaped". So if, say, you have Lionel 18" Train set. in a field
> it must be written to the .csv file as ...,"Lionel 18\" Train
> set.",.... if you are using double quotes to delimit string literals.
>
> If you have, say, Lionel 18" Train set "Anniversary" model. in a
> field the .csv entry should look like ...,"Lionel 18\" Train set
> \"Anniversary\" model.",...
>
>
> If you change the delimiter for character fields in the .csv file to
> single quotes you shouldn't need to "escape" the " whether it is used to
> indicate inches or not. MySQL should be quite happy to accept a .csv
> file delimited with single quotes i.e ...,'Lionel 18" Train set
> "Anniversary" model.',....
>
> Using a single quotes as delimiter will also automatically take care of
> any part_no values which contain double quotes. It does mean, of course,
> that any apostrophes in the text will need to be escaped. You can't win
> them all. :-)
>
> Try the revised program attached if you don't have any apostrophe's in
> any of your text fields.
>
> Mervyn.
>
>
>
>
> if file('tmaster.csv')
> new file().delete('tmaster.csv')
> endif
>
> if file('tmaster.dbf')
> drop table tmaster
> endif
>
> create table tmaster (;
> id numeric(11), ;
> part_no char(10), ;
> title char(35), ;
> qty numeric(6,0), ;
> sell numeric(7), ;
> grade char(16), ;
> mfg char(35), ;
> cuml numeric(5,0), ;
> sdate date, ;
> asell numeric(7), ;
> au_desc char(254))
>
> use tmaster
> append from master for asell # 0 and title # null and part_no < "AF00760X"
> go bottom
> msgbox( "Count is " +id+ ". The master.csv file must be ftped to the correct directory before importing into mysql." )
> copy to tmaster.csv delim
> use
>
> cFileIn ='tmaster.csv'
> cFileOut = 'tempworkfile.txt'
> fIn = new file()
> fIn.open(cFileIn)
> fOut = new file()
> fOut.create(cFileOut)
> do while not fIn.eof()
> cRead = fIn.gets()
> If not chr(26)$cRead
> fOut.Puts(cRead)
> endif
> enddo
> fIn.close()
> fOut.close()
> new file().delete(cFileIn)
> new file().rename(cFileOut,cFileIn)
|
|