| Subject |
Re: separator for CSV file to be imported into dBase |
| From |
Mervyn Bick <invalid@invalid.invalid> |
| Date |
Thu, 1 Oct 2020 19:54:20 +0200 |
| Newsgroups |
dbase.getting-started |
On 2020/10/01 17:39, Joseph wrote:
> Bonjour Jean,
> Je n'ai pas lu toutes le suggestions mais ayant eu plusieurs fois ce probleme, j'ai choisi un moyen externe, avec un editeur comme Notepad++:
> 1- remplacer toutes les virgules par des points
> 2- puis tous le point-virgules par des virgules.
> Le csv en sortie est alors compatible pour l'importation.
> Bonne contination !
> Bien cordialement
> Joseph
>
> (pour une fois que je peux écrire en français, je ne m'en prive pas !)
Please stick to English for this newsgroup. If writing in English is a
problem Google Translate or DeepL translations, while sometimes not
exact, are usually good enough for us to understand.
Using a text editor to manually rework a source file is one way of doing
it but it can be a nuisance if one has many files to deal with. If
dealing with this specific format of file is going to be a regular task
then a little program is not difficult to write.
The little program below took about twenty minutes to type and test.
All it requires is for the source file and target .dbf names to be
edited. A few more minutes work will be all it needs to allow the names
to passes as parameters.
*********************
cSource = 'test_semicolon.csv'
cTarget = 'test_semicolon.dbf'
clear
s = seconds()
_app.allowYieldOnMsg := true
set procedure to :duflp:stringex.cc
q = new query()
q.sql = 'select * from '+cTarget
q.active = true
f = new file()
f.open(cSource)
nCount = 0
do while not f.eof()
cStr = f.gets()
aArray = new stringex(cStr).breakstring(';')
q.rowset.beginappend()
for n = 1 to aArray.size
q.rowset.fields[n].value = aArray[n]
next
q.rowset.save()
nCount ++
if nCount%50 = 0
?nCount+ ' Records'
endif
enddo
?nCount+ ' Records'
?seconds()-s +' Seconds'
f.close()
q.active = false
**************************
Mervyn.
|
|