Author Topic: Ask : cara import text file ke dbf  (Read 1068 times)

0 Members and 1 Guest are viewing this topic.

Offline cgunawan

  • Newbie
  • *
  • Posts: 15
Ask : cara import text file ke dbf
« on: January 14, 2018, 04:39:10 PM »
Sore rekan2,

sy mau tnya mengenai import text ke dbf.

jika sy punya data text file sbb :

drwxrwxr-x    2 504      504          4096 Sep 09 17:15 Back01
drwxr-xr-x     3 504      504          4096 Sep 18 07:51 Exp02
drwxrwxr-x    2 504      504          4096 Sep 09 17:15 His
drwxrwxr-x    2 504      504          4096 Dec 08 01:27 BackHist

gimana cara txt file tsb bs lngsng di import ke dbf dgn struktur sbb :

field1           field2    field3   field4         field5   field6    field7   field8         
drwxrwxr-x    2         504      504          4096    Sep 09 17:15   Back01
drwxr-xr-x     3         504      504          4096    Sep 18 07:51   Exp02
drwxrwxr-x    2         504      504          4096    Sep 09 17:15   His
drwxrwxr-x    2         504      504          4096    Dec 08 01:27   BackHist

pemisah data di txt file adalah spasi

mohon pencerahan nya.

Thanks & Regards
Christian

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.605
    • Foxy Land
Re: Ask : cara import text file ke dbf
« Reply #1 on: January 14, 2018, 05:48:56 PM »
itu output dari linux kan? Kalau tujuannya untuk melakukan men-traverse file isi dari folder, Anda bisa pakai perintah DIR() (asumsi credential linux memenuhi dan folder di linux sudah di sharing di windows). Tapi Anda gak akan bisa mendapatkan informasi file permission melalui fungsi DIR() (karena Windows tidak mengenali permission linux). Jadi kalau misal saya harus mengambil informasi itu, cara yang langsung saya pikirkan adalah:
- melakukan koneksi SSH server melalui aplikasi VFP. Untuk membuat client SSH, cara paling gampang adalah menggunakan OpenSSH (bisa di download di https://sourceforge.net/projects/sshwindows/). Itu adalah installasi ssh server. Nah, yang dibutuhkan adalah file ssh yang merupakan file ssh client nya. Jadi tinggal jalankan ShellExecute() ssh.exe, dengan command ls -l .
- mengambil output nya dan dimasukkan ke variable
- Memparse variable untuk dimasukkan ke cursor atau tabel dbf.

Seperti biasa, mudah menjelaskan, tapi saya tau pasti tidak mudah untuk dipraktekkan. Tapi tentu saja semua harus dicoba. Dengan cara dia tas, harusnya 2 sampai 4 jam sudah cukup untuk mendapatkan hasil yang Anda inginkan.


Good luck :)

foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline cgunawan

  • Newbie
  • *
  • Posts: 15
Re: Ask : cara import text file ke dbf
« Reply #2 on: January 14, 2018, 08:52:04 PM »
Benar Kang Foxy, output linux. tepat nya itu hasil getlist folder n file dr ftp server.
sy lg cb buat program utk copy file dari ftp server. stlh file berhasil di copy ke local, file tsb di move ke folder lain.
apa ada saran ?

Thanks & Regards,
Christian

Offline oongs

  • Newbie
  • *
  • Posts: 34
Re: Ask : cara import text file ke dbf
« Reply #3 on: January 18, 2018, 10:48:00 PM »
 :icon_study:
Mungkin ini bisa membantu ...
Ini akal-akalan dari sy

SET TALK OFF
SET STATUS OFF
CLEAR
CLOSE DATABASES

NamaFileTXT = "SumberDATA.txt"
CREATE TABLE temp (KATA C(200))
APPEND FROM &NamaFileTXT DELIMITED
GO TOP
cKATA = Allt(KATA)
Kolom1 = LEFT(cKATA, AmbilKiri(cKATA, " "))
Kolom8 = RIGHT(cKATA, AmbilKanan(cKATA, " "))
ccKATA = Allt(Subs(cKATA, LEN(Kolom1)+1, LEN(cKATA)-(LEN(Kolom1)+1)-(LEN(Kolom8))))

Kolom2 = LEFT(ccKATA, AmbilKiri(ccKATA, " "))
Kolom7 = RIGHT(ccKATA, AmbilKanan(ccKATA, " "))
cccKATA = Allt(Subs(ccKATA, LEN(Kolom2)+1, LEN(ccKATA)-(LEN(Kolom2)+1)-(LEN(Kolom7))))

Kolom3 = LEFT(cccKATA, AmbilKiri(cccKATA, " "))
Kolom6 = RIGHT(cccKATA, AmbilKanan(cccKATA, " "))
Kolom66 = RIGHT(LEFT(cccKATA, LEN(cccKATA)-3), AmbilKanan(LEFT(cccKATA, LEN(cccKATA)-2), " "))
ccccKATA = Allt(Subs(cccKATA, LEN(Kolom3)+1, LEN(cccKATA)-(LEN(Kolom3)+1)-(LEN(Kolom6))-(LEN(Kolom66)) ))

Kolom4 = LEFT(ccccKATA, AmbilKiri(ccccKATA, " "))
Kolom5 = RIGHT(ccccKATA, AmbilKanan(ccccKATA, " "))
USE
CREATE TABLE datanya (Field1 C(LEN(Kolom1)), Field2 C(LEN(Kolom2)), Field3 C(LEN(Kolom3)), Field4 C(LEN(Kolom4)), ;
       Field5 C(LEN(Kolom5)), Field6 C(LEN(Kolom6)+LEN(Kolom66)+1), Field7 C(LEN(Kolom7)), Field8 C(LEN(Kolom8)))
USE

USE temp IN 1
USE datanya IN 2
SELECT temp
SCAN
   cKATA = Allt(KATA)
   Kolom1 = LEFT(cKATA, AmbilKiri(cKATA, " "))
   Kolom8 = RIGHT(cKATA, AmbilKanan(cKATA, " "))
   ccKATA = Allt(Subs(cKATA, LEN(Kolom1)+1, LEN(cKATA)-(LEN(Kolom1)+1)-(LEN(Kolom8))))

   Kolom2 = LEFT(ccKATA, AmbilKiri(ccKATA, " "))
   Kolom7 = RIGHT(ccKATA, AmbilKanan(ccKATA, " "))
   cccKATA = Allt(Subs(ccKATA, LEN(Kolom2)+1, LEN(ccKATA)-(LEN(Kolom2)+1)-(LEN(Kolom7))))

   Kolom3 = LEFT(cccKATA, AmbilKiri(cccKATA, " "))
   Kolom6 = RIGHT(cccKATA, AmbilKanan(cccKATA, " "))
   Kolom66 = RIGHT(LEFT(cccKATA, LEN(cccKATA)-3), AmbilKanan(LEFT(cccKATA, LEN(cccKATA)-2), " "))
   ccccKATA = Allt(Subs(cccKATA, LEN(Kolom3)+1, LEN(cccKATA)-(LEN(Kolom3)+1)-(LEN(Kolom6))-(LEN(Kolom66)) ))

   Kolom4 = LEFT(ccccKATA, AmbilKiri(ccccKATA, " "))
   Kolom5 = RIGHT(ccccKATA, AmbilKanan(ccccKATA, " "))
   SELECT datanya
   APPEND BLANK
   REPLACE Field1 WITH Kolom1, Field2 WITH Kolom2, Field3 WITH Kolom3, Field4 WITH Kolom4, ;
           Field5 WITH Kolom5, Field6 WITH Kolom6+" "+Kolom66, Field7 WITH Kolom7, Field8 WITH Kolom8
ENDSCAN
SELECT datanya

BROWSE
#  FIELD1     FIELD2 FIELD3 FIELD4 FIELD5 FIELD6 FIELD7 FIELD8
1  drwxrwxr-x 2      504    504    4096   09 Sep 17:15  Back01
2  drwxr-xr-x 3      504    504    4096   18 Sep 07:51  Exp02
3  drwxrwxr-x 2      504    504    4096   09 Sep 17:15  His   
4  drwxrwxr-x 2      504    504    4096   08 Dec 01:27  BackHi

FUNCTION AmbilKiri
   PARAMETERS nChar, Hentikan
   For Iii=1 To Len(nChar)
       PerKarakter = Subs(nChar, Iii, 1)
       If PerKarakter = Hentikan
          Exit
       EndI
   Next
   Retu Iii-1
ENDFUNC

FUNCTION AmbilKanan
   PARAMETERS nChar, Hentikan
   nChar = Allt(nChar)
   AngkaPengambilan = 0
   For Iii=Len(nChar) To 1 Step -1
       AngkaPengambilan = AngkaPengambilan + 1
       PerKarakter = Subs(nChar, Iii, 1)
       If PerKarakter = Hentikan
          Exit
       EndI
   Next
   Retu AngkaPengambilan-1
ENDFUNC

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.605
    • Foxy Land
Re: Ask : cara import text file ke dbf
« Reply #4 on: January 20, 2018, 04:45:11 AM »
@cgunawan:
Quote from: you
Benar Kang Foxy, output linux. tepat nya itu hasil getlist folder n file dr ftp server.
sy lg cb buat program utk copy file dari ftp server. stlh file berhasil di copy ke local, file tsb di move ke folder lain.
apa ada saran ?

Kesulitan code Anda dimana? apakah code Anda error saat (atau Anda gak tau cara) mengirimkan perintah "getlist" ke ftp server? Atau code Anda eror saat mem-parse hasil nya? Coba Anda post error message yang ANda dapat dan potongan code yang error.

@oongs: hahaha... itu code "sisa" Clipper dulu ya? di VFP ada fungsi GetWordCount() dan GetWordNum() yang bisa memparse string dengan sangat cepat dan efisien, silahkan cek di vfp help  :)

hth,

foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline oongs

  • Newbie
  • *
  • Posts: 34
Re: Ask : cara import text file ke dbf
« Reply #5 on: January 20, 2018, 01:50:55 PM »
 :laughing7:

Betul bang Foxy ....
Itu jaman dBase, FoxBase n Clipper ...
Justru itulah yang,  ... nGangeni ...  :love4:

Mengutip kata" mztolo.irenk.com ' Dibuang Sayang:love5:



Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.051
  • Awas ya...
Re: Ask : cara import text file ke dbf
« Reply #6 on: January 22, 2018, 07:46:56 AM »
bah hanya lebih cepat sekejap mata kiri........   itupun kalo bener
« Last Edit: January 22, 2018, 07:48:52 AM by davidmustakim »

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.605
    • Foxy Land
Re: Ask : cara import text file ke dbf
« Reply #7 on: January 22, 2018, 08:26:54 AM »
Quote from: oom david
bah hanya lebih cepat sekejap mata kiri........   itupun kalo bener

kalau string cuma 100 kilobytes, jelas gak akan kerasa pak. Tapi coba kasih file text 30 megabytes, lalu parse dengan user-defined function vs VFP native. Beda jauh boss..... :icon_biggrin:

foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.051
  • Awas ya...
Re: Ask : cara import text file ke dbf
« Reply #8 on: January 22, 2018, 08:37:30 AM »
kalo itu mah si Oon juga tau   apalagi Oong
TAPI CUMA BEDA TAMBAHAN DUA KEJAPAN


COBA DEH GUE SEDIAKAN 10 JUTA
« Last Edit: January 22, 2018, 08:43:05 AM by davidmustakim »

Offline onytoo

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 1.032
Re: Ask : cara import text file ke dbf
« Reply #9 on: January 31, 2018, 12:25:48 AM »



@cgunawan


kalau hanya untuk parsing data text seperti itu, anda cuma perlu dua fungsi dari VFP, yaitu fungsi ALINES() dan FILETOSTR()


Code: [Select]
lnRows = ALINES(laRows, FILETOSTR("mytextfile.txt"), 5, CHR(10))     && CHR(10) is newline in linux as in Windows is CHR(13)+CHR(10)
FOR i=1 TO m.lnRows
  * parsing columns
  lnCols = ALINES(laCols, laRows[m.i], 5, " ")
  IF lnCols > 0
    * parsing columns here, and store to table
  ENDIF
ENDFOR


Good luck!


regards,
onytoo
Long life Visual FoxPro...