ນີ້ແມ່ນຄໍາສັ່ງ pgloader ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
pgloader - ຕົວໂຫຼດຂໍ້ມູນ PostgreSQL
ສະຫຼຸບສັງລວມ
pgloader [ ] [ ]...
pgloader [ ] ເປົ້າໝາຍແຫຼ່ງ
ລາຍລະອຽດ
pgloader ໂຫຼດຂໍ້ມູນຈາກແຫຼ່ງຕ່າງໆເຂົ້າໄປໃນ PostgreSQL. ມັນສາມາດຫັນປ່ຽນຂໍ້ມູນມັນ
ອ່ານໃນການບິນແລະສົ່ງ SQL ດິບກ່ອນແລະຫຼັງຈາກການໂຫຼດ. ມັນໃຊ້ COPY
ໂປຣໂຕຄໍ PostgreSQL ເພື່ອຖ່າຍທອດຂໍ້ມູນເຂົ້າໄປໃນເຊີບເວີ, ແລະຈັດການຂໍ້ຜິດພາດໂດຍການຕື່ມ a
ຄູ່ຂອງ ປະຕິເສດ.dat ແລະ reject.log ໄຟລ໌.
pgloader ດໍາເນີນການໂດຍໃຊ້ຄໍາສັ່ງທີ່ອ່ານຈາກໄຟລ໌:
pgloader commands.load
ຫຼືໂດຍການໃຊ້ການໂຕ້ຖຽງແລະທາງເລືອກທັງຫມົດທີ່ສະຫນອງໃຫ້ຢູ່ໃນເສັ້ນຄໍາສັ່ງ:
pgloader ເປົ້າຫມາຍແຫຼ່ງ
ການໂຕ້ຖຽງ
ການໂຕ້ຖຽງ pgloader ສາມາດເປັນໄຟລ໌ໂຫຼດໄດ້ຫຼາຍເທົ່າທີ່ຕ້ອງການ, ຫຼືການເຊື່ອມຕໍ່ສອງສາມອັນ
ຊ່ອຍແນ່ໃສ່ໄຟລ໌ປ້ອນຂໍ້ມູນສະເພາະ.
ແຫຼ່ງຂໍ້ມູນ ການຕິດຕໍ່ ຄັກ
ຮູບແບບສະຕຣິງການເຊື່ອມຕໍ່ແຫຼ່ງແມ່ນດັ່ງຕໍ່ໄປນີ້:
format:///absolute/path/to/file.ext
format://./relative/path/to/file.ext
ບ່ອນທີ່ຮູບແບບອາດຈະເປັນຫນຶ່ງໃນ csv, ຄົງ, ຄັດລອກ, dbf, db3 or ixf.
db://user:pass@host:port/dbname
ບ່ອນທີ່ db ອາດຈະເປັນຂອງ sqlite, mysql or mssql.
ເມື່ອໃຊ້ຮູບແບບແຫຼ່ງທີ່ອີງໃສ່ໄຟລ໌, pgloader ຍັງສະຫນັບສະຫນູນການດຶງໄຟລ໌ຕົ້ນສະບັບ
ຈາກສະຖານທີ່ http ແລະ decompressing archive ຖ້າຈໍາເປັນ. ໃນກໍລະນີດັ່ງກ່າວນີ້, ມັນເປັນສິ່ງຈໍາເປັນ
ການນໍາໃຊ້ --ປະເພດ ທາງເລືອກທີ່ຈະລະບຸຮູບແບບທີ່ຄາດໄວ້ຂອງໄຟລ໌. ເບິ່ງຕົວຢ່າງ
ຂ້າງລຸ່ມນີ້.
ໃຫ້ສັງເກດວ່າບາງຮູບແບບໄຟລ໌ຮຽກຮ້ອງໃຫ້ມີການອະທິບາຍລາຍລະອຽດການປະຕິບັດບາງຢ່າງເຊັ່ນ:
ຖັນທີ່ຈະອ່ານແລະຕົວຂັ້ນແລະວົງຢືມເມື່ອໂຫລດຈາກ csv.
ສໍາລັບສະຖານະການໂຫຼດທີ່ສັບສົນຫຼາຍ, ທ່ານຈະຕ້ອງຂຽນຄໍາສັ່ງການໂຫຼດເຕັມໃນ
syntax ທີ່ອະທິບາຍຕໍ່ມາໃນເອກະສານນີ້.
ເປົ້າຫມາຍ ການຕິດຕໍ່ ຄັກ
ຮູບແບບການເຊື່ອມຕໍ່ເປົ້າຫມາຍແມ່ນອະທິບາຍໃນລາຍລະອຽດຕໍ່ມາໃນເອກະສານນີ້, ເບິ່ງ
ພາກສ່ວນເຊື່ອມຕໍ່ String.
OPTIONS
ສອບຖາມຂໍ້ມູນ OPTIONS
ໃຊ້ທາງເລືອກເຫຼົ່ານີ້ໃນເວລາທີ່ທ່ານຕ້ອງການຮູ້ເພີ່ມເຕີມກ່ຽວກັບວິທີການນໍາໃຊ້ pgloader, ເປັນທາງເລືອກເຫຼົ່ານັ້ນ
ຈະເຮັດໃຫ້ເກີດ pgloader ບໍ່ໃຫ້ໂຫຼດຂໍ້ມູນໃດໆ.
-h, - ຊ່ວຍ
ສະແດງສະຫຼຸບການໃຊ້ຄໍາສັ່ງແລະອອກ.
-V, - ການປ່ຽນແປງ
ສະແດງສະຕຣິງເວີຊັນ pgloader ແລະອອກ.
-E, --list-encodes
ລາຍຊື່ການເຂົ້າລະຫັດທີ່ຮູ້ຈັກໃນ pgloader ລຸ້ນນີ້.
-U, --upgrade-config
ວິເຄາະໄຟລ໌ທີ່ໃຫ້ຢູ່ໃນເສັ້ນຄໍາສັ່ງເປັນ pgloader.conf ໄຟລ໌ທີ່ມີ ເລີ່ມ syntax
ທີ່ໃຊ້ຢູ່ໃນ pgloader ເວີຊັ່ນ 2.x, ແລະອອກ syntax ຄໍາສັ່ງໃຫມ່ສໍາລັບ
pgloader ກ່ຽວກັບຜົນຜະລິດມາດຕະຖານ.
ທົ່ວໄປ OPTIONS
ທາງເລືອກເຫຼົ່ານັ້ນແມ່ນຫມາຍເຖິງການປັບ pgloader ພຶດຕິກໍາໃນເວລາໂຫຼດຂໍ້ມູນ.
-v, -- verbose
ເປັນຄຳເວົ້າ.
-q, --ງຽບ
ງຽບ.
-d, --debug
ສະແດງຂໍ້ຄວາມຂໍ້ມູນລະດັບດີບັກ.
-D, --root-dir
ຕັ້ງຄ່າລະບົບການເຮັດວຽກຂອງຮາກ (ຄ່າເລີ່ມຕົ້ນເປັນ "/tmp/pgloader").
-L, --logfile
ຕັ້ງໄຟລ໌ບັນທຶກ pgloader (ຄ່າເລີ່ມຕົ້ນເປັນ "/tmp/pgloader.log").
--log-min-mesages
ລະດັບຕໍ່າສຸດຂອງ verbosity ທີ່ຈໍາເປັນສໍາລັບຂໍ້ຄວາມບັນທຶກເພື່ອເຮັດໃຫ້ມັນເຂົ້າໄປໃນ logfile. ຫນຶ່ງໃນ
ສໍາຄັນ, ບັນທຶກ, ຄວາມຜິດພາດ, ການເຕືອນໄພ, ແຈ້ງການ, ຂໍ້ມູນຫຼືດີບັກ.
--client-min-messages
ລະດັບຕໍ່າສຸດຂອງ verbosity ທີ່ຈໍາເປັນສໍາລັບຂໍ້ຄວາມບັນທຶກເພື່ອເຮັດໃຫ້ມັນໄປ console ໄດ້. ຫນຶ່ງໃນ
ສໍາຄັນ, ບັນທຶກ, ຄວາມຜິດພາດ, ການເຕືອນໄພ, ແຈ້ງການ, ຂໍ້ມູນຫຼືດີບັກ.
-S, -- ສະຫຼຸບ
ຊື່ໄຟລ໌ບ່ອນທີ່ຈະສຳເນົາຜົນສະຫຼຸບ. ເມື່ອພີ່ນ້ອງ, ຊື່ໄຟລ໌ແມ່ນ
ຂະຫຍາຍເຂົ້າໄປໃນ *root-dir*.
ຮູບແບບຂອງຊື່ໄຟລ໌ເລີ່ມຕົ້ນທີ່ຈະເປັນ ມະນຸດ ອ່ານໄດ້. ມັນເປັນໄປໄດ້ທີ່ຈະມີ
ຜົນຜະລິດໃນຮູບແບບທີ່ເປັນມິດກັບເຄື່ອງຈັກເຊັ່ນ: CSV, COPY (ສໍາເນົາຂອງຕົນເອງຂອງ PostgreSQL
format) ຫຼື JSON ໂດຍການລະບຸຊື່ໄຟລ໌ທີ່ມີນາມສະກຸນ resp. csv, .ສຳເນົາ or
.json.
-l , --load-lisp-file
ລະບຸລາຍຊື່ ເອກະສານ ເພື່ອລວບລວມແລະໂຫລດເຂົ້າໄປໃນຮູບພາບ pgloader ກ່ອນທີ່ຈະອ່ານ
ຄໍາສັ່ງ, ອະນຸຍາດໃຫ້ກໍານົດຫນ້າທີ່ການຫັນເປັນພິເສດ. ຫນ້າທີ່ເຫຼົ່ານັ້ນຄວນ
ຖືກກໍານົດໄວ້ໃນ pgloader.transforms ຊຸດ. ທາງເລືອກນີ້ສາມາດປາກົດຫຼາຍກ່ວາ
ເມື່ອຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
-- ການປັບປຸງຕົນເອງ :
ລະບຸ ກ ລະບົບ ບ່ອນທີ່ຊອກຫາແຫຼ່ງ pgloader ດັ່ງນັ້ນຫນຶ່ງໃນທໍາອິດທີ່ສຸດ
ສິ່ງທີ່ມັນເຮັດແມ່ນການໂຫຼດແບບໄດນາມິກ (ແລະການລວບລວມລະຫັດເຄື່ອງຈັກ) ອື່ນ
ລຸ້ນຂອງມັນເອງ, ປົກກະຕິແລ້ວເປັນອັນໃໝ່ກວ່າເຊັ່ນ: git checkout ຫຼ້າສຸດ.
ຄໍາສັ່ງ LINE ເທົ່ານັ້ນ ວຽກງານຕ່າງໆ
ທາງເລືອກເຫຼົ່ານັ້ນແມ່ນຫມາຍຄວາມວ່າຈະໄດ້ຮັບການນໍາໃຊ້ໃນເວລາທີ່ການນໍາໃຊ້ pgloader ຈາກເສັ້ນຄໍາສັ່ງເທົ່ານັ້ນ, ແທນທີ່ຈະ
ກ່ວາການນໍາໃຊ້ໄຟລ໌ຄໍາສັ່ງແລະປະໂຫຍກຄໍາສັ່ງອຸດົມສົມບູນແລະ parser. ໃນກໍລະນີງ່າຍດາຍ, ມັນສາມາດເຮັດໄດ້
ງ່າຍກວ່າທີ່ຈະໃຊ້ ແຫຼ່ງຂໍ້ມູນ ແລະ ເປົ້າຫມາຍ ໂດຍກົງໃນເສັ້ນຄໍາສັ່ງ, ຈາກນັ້ນປັບປ່ຽນ
ການໂຫຼດດ້ວຍຕົວເລືອກເຫຼົ່ານັ້ນ:
· --ກັບ "ທາງເລືອກ":
ອະນຸຍາດໃຫ້ຕັ້ງຄ່າທາງເລືອກຈາກແຖວຄໍາສັ່ງ. ທ່ານສາມາດໃຊ້ຕົວເລືອກນັ້ນໄດ້ຫຼາຍເທື່ອ
ເຈົ້າຕ້ອງການ. ການໂຕ້ຖຽງທາງເລືອກຕ້ອງປະຕິບັດຕາມ ກັບ clause ສໍາລັບປະເພດຂອງແຫຼ່ງຂອງ
ແຫຼ່ງຂໍ້ມູນ ສະເພາະ, ດັ່ງທີ່ໄດ້ອະທິບາຍຕໍ່ມາໃນເອກະສານນີ້.
· --ຕັ້ງ "guc_name='value'"
ອະນຸຍາດໃຫ້ຕັ້ງຄ່າການຕັ້ງຄ່າ PostgreSQL ຈາກແຖວຄໍາສັ່ງ. ໃຫ້ສັງເກດວ່າທາງເລືອກ
parsing ແມ່ນຄືກັນກັບເວລາທີ່ໃຊ້ຈາກ SET ປະໂຫຍກຄໍາສັ່ງ, ໂດຍສະເພາະທ່ານຕ້ອງ
ກວມເອົາຄ່າ guc ດ້ວຍວົງຢືມດຽວ.
· --ພາກສະຫນາມ "... "
ອະນຸຍາດໃຫ້ຕັ້ງຄໍານິຍາມຊ່ອງຂໍ້ມູນແຫຼ່ງ. ຊ່ອງຂໍ້ມູນແມ່ນສະສົມຕາມລໍາດັບທີ່ໃຫ້ໄວ້
ເສັ້ນຄໍາສັ່ງ. ມັນເປັນໄປໄດ້ທີ່ຈະໃຊ້ a --ພາກສະຫນາມ ທາງເລືອກຕໍ່ຊ່ອງຂໍ້ມູນໃນແຫຼ່ງ
ໄຟລ໌, ຫຼືເພື່ອແຍກຄໍານິຍາມຊ່ອງຂໍ້ມູນໂດຍເຄື່ອງໝາຍຈຸດ, ດັ່ງທີ່ເຈົ້າຈະເຮັດໃນ ແລ່ນ
ທົ່ງນາ ອານຸປະໂຫຍດ.
· --ໂຍນ "... "
ອະນຸຍາດໃຫ້ຕັ້ງກົດລະບຽບການຄາສທ໌ສະເພາະສໍາລັບການໂຫຼດຂໍ້ມູນໄດ້.
· --ປະເພດ csv|ແກ້ໄຂ|db3|ixf|sqlite|mysql|mssql
ອະນຸຍາດໃຫ້ບັງຄັບປະເພດແຫຼ່ງ, ໃນກໍລະນີທີ່ ແຫຼ່ງຂໍ້ມູນ parsing ບໍ່ເປັນທີ່ພໍໃຈ.
· --ການເຂົ້າລະຫັດ
ກໍານົດການເຂົ້າລະຫັດຂອງໄຟລ໌ແຫຼ່ງທີ່ຈະໂຫລດຂໍ້ມູນຈາກ.
· -- ກ່ອນ
parse ຊື່ໄຟລ໌ທີ່ໃຫ້ສໍາລັບການສອບຖາມ SQL ແລະດໍາເນີນການໃຫ້ເຂົາເຈົ້າກັບຖານຂໍ້ມູນເປົ້າຫມາຍກ່ອນ
ກຳລັງໂຫຼດຂໍ້ມູນຈາກແຫຼ່ງທີ່ມາ. ຄໍາຖາມຖືກວິເຄາະໂດຍ pgloader ຕົວຂອງມັນເອງ: ພວກເຂົາຕ້ອງການ
ຈະຖືກຢຸດໂດຍເຄິ່ງຈໍ້າສອງເມັດ (;) ແລະໄຟລ໌ອາດຈະປະກອບມີ \i or \ir ຄໍາສັ່ງທີ່ຈະ
ປະກອບດ້ວຍ ໄຟລ໌ອື່ນ.
· -- ຫຼັງຈາກ
parse ຊື່ໄຟລ໌ທີ່ໃຫ້ສໍາລັບການສອບຖາມ SQL ແລະດໍາເນີນການໃຫ້ເຂົາເຈົ້າກັບຖານຂໍ້ມູນເປົ້າຫມາຍຫຼັງຈາກນັ້ນ
ມີການໂຫຼດຂໍ້ມູນຈາກແຫຼ່ງ. ຄໍາຖາມຖືກວິເຄາະດ້ວຍວິທີດຽວກັນກັບ
ໄດ້ -- ກ່ອນ ທາງເລືອກ, ເບິ່ງຂ້າງເທິງ.
ເພີ່ມເຕີມ ດີບັກ ຂໍ້ມູນ
ເພື່ອໃຫ້ໄດ້ຮັບຈໍານວນສູງສຸດຂອງຂໍ້ມູນ debug, ທ່ານສາມາດນໍາໃຊ້ທັງສອງ -- verbose ແລະ
--debug switches ໃນເວລາດຽວກັນ, ເຊິ່ງເທົ່າກັບເວົ້າ --client-min-messages
ຂໍ້ມູນ. ຫຼັງຈາກນັ້ນ, ຂໍ້ຄວາມບັນທຶກຈະສະແດງໃຫ້ເຫັນຂໍ້ມູນທີ່ກໍາລັງດໍາເນີນການ, ໃນກໍລະນີທີ່
ລະຫັດມີການສະຫນັບສະຫນູນຢ່າງຊັດເຈນສໍາລັບມັນ.
ການນໍາໃຊ້ ຕົວຢ່າງ
ກວດເບິ່ງຕົວເລືອກແຖວຄໍາສັ່ງ ແລະສະບັບຂອງ pgloader:
pgloader --help
pgloader --version
ກໍາລັງໂຫລດ ຈາກ a ສະລັບສັບຊ້ອນ ຄໍາສັ່ງ
ໃຊ້ໄຟລ໌ຄໍາສັ່ງເປັນການໂຕ້ຖຽງຄໍາສັ່ງ pgloader, pgloader ຈະແຍກໄຟລ໌ນັ້ນແລະ
ປະຕິບັດຄໍາສັ່ງທີ່ພົບເຫັນຢູ່ໃນມັນ:
pgloader --verbose ./test/csv-districts.load
CSV
ໂຫຼດຂໍ້ມູນຈາກໄຟລ໌ CSV ເຂົ້າໄປໃນຕາຕະລາງທີ່ມີຢູ່ແລ້ວໃນຖານຂໍ້ມູນຂອງທ່ານ:
pgloader --type csv \
--field ID --field field \
-- ດ້ວຍການຫຍໍ້ \
-- ກັບ "ຊ່ອງຂໍ້ມູນຖືກຢຸດໂດຍ ','" \
./test/data/matching-1.csv \
postgres:///pgloader?tablename=matching
ໃນຕົວຢ່າງນັ້ນການໂຫຼດທັງຫມົດແມ່ນຂັບເຄື່ອນຈາກເສັ້ນຄໍາສັ່ງ, ຂ້າມຄວາມຕ້ອງການ
ການຂຽນຄໍາສັ່ງໃນ syntax ຄໍາສັ່ງ pgloader ທັງຫມົດ. ຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກວ່າບໍ່ມີຄໍາສັ່ງ,
ຂໍ້ມູນເພີ່ມເຕີມທີ່ຈໍາເປັນຕ້ອງໄດ້ຮັບການສະຫນອງໃຫ້ໃນບັນຊີຄໍາສັ່ງການນໍາໃຊ້ --ປະເພດ ແລະ
--ພາກສະຫນາມ ແລະ --ກັບ switches
ສໍາລັບເອກະສານກ່ຽວກັບ syntaxes ທີ່ມີຢູ່ສໍາລັບການ --ພາກສະຫນາມ ແລະ --ກັບ ສະຫຼັບ, ກະລຸນາ
ອ້າງອີງໃສ່ພາກສ່ວນ CSV ຕໍ່ມາໃນໜ້າ man.
ໃຫ້ສັງເກດວ່າ PostgreSQL URI ປະກອບມີເປົ້າຫມາຍ ຊື່ຕາຕະລາງ.
ອ່ານ ຈາກ STDIN
ແຫຼ່ງ pgloader ທີ່ອີງໃສ່ໄຟລ໌ສາມາດຖືກໂຫລດຈາກວັດສະດຸປ້ອນມາດຕະຖານ, ດັ່ງຕໍ່ໄປນີ້
ຍົກຕົວຢ່າງ:
pgloader --type csv \
--field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong" \
--with "ຂ້າມ header = 1" \
-- ກັບ "ຊ່ອງຂໍ້ມູນຖືກຢຸດໂດຍ '\t'" \
- \
postgresql:///pgloader?districts_longlat \
< test/data/2013_Gaz_113CDs_national.txt
ຂີດ (-) character as a source ຖືກນໍາໃຊ້ເພື່ອຫມາຍຄວາມວ່າ ມາດຕະຖານ ການປ້ອນຂໍ້ມູນ, ຕາມປົກກະຕິໃນ Unix
ເສັ້ນຄໍາສັ່ງ. ມັນເປັນໄປໄດ້ທີ່ຈະຖ່າຍທອດເນື້ອໃນທີ່ຖືກບີບອັດໃສ່ pgloader ດ້ວຍເຕັກນິກນີ້,
ການນໍາໃຊ້ທໍ່ Unix:
gunzip -c source.gz | pgloader --type csv ... - pgsql:///target?foo
ກໍາລັງໂຫລດ ຈາກ CSV ມີ ໂດຍຜ່ານການ HTTP
ຄໍາສັ່ງດຽວກັນກັບພຽງແຕ່ຂ້າງເທິງຍັງສາມາດດໍາເນີນການໄດ້ຖ້າຫາກວ່າໄຟລ໌ CSV ເກີດຂຶ້ນທີ່ຈະພົບເຫັນຢູ່ໃນ a
ສະຖານທີ່ HTTP ໄລຍະໄກ:
pgloader --type csv \
--field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong" \
--with "ຂ້າມ header = 1" \
-- ກັບ "ຊ່ອງຂໍ້ມູນຖືກຢຸດໂດຍ '\t'" \
http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt \
postgresql:///pgloader?districts_longlat
ບາງທາງເລືອກເພີ່ມເຕີມຕ້ອງຖືກໃຊ້ໃນກໍລະນີນີ້, ເພາະວ່າໄຟລ໌ມີສ່ວນຫົວແຖວດຽວ
(ໂດຍທົ່ວໄປແລ້ວຊື່ຖັນນັ້ນ, ອາດຈະເປັນແຈ້ງການລິຂະສິດ). ນອກຈາກນັ້ນ, ໃນກໍລະນີດັ່ງກ່າວ, ພວກເຮົາ
ລະບຸຊ່ອງຂໍ້ມູນທັງໝົດເຂົ້າໃນອັນດຽວ --ພາກສະຫນາມ ການໂຕ້ຖຽງທາງເລືອກ.
ອີກເທື່ອຫນຶ່ງ, ສາຍເຊື່ອມຕໍ່ເປົ້າຫມາຍ PostgreSQL ຕ້ອງມີ ຊື່ຕາຕະລາງ ທາງເລືອກແລະທ່ານ
ຕ້ອງຮັບປະກັນວ່າຕາຕະລາງເປົ້າຫມາຍມີຢູ່ແລະອາດຈະເຫມາະກັບຂໍ້ມູນ. ນີ້ແມ່ນຄໍາສັ່ງ SQL
ໃຊ້ໃນຕົວຢ່າງນັ້ນໃນກໍລະນີທີ່ທ່ານຕ້ອງການທົດລອງມັນຕົວທ່ານເອງ:
ສ້າງຕາຕະລາງ districts_longlat
(
ຂໍ້ຄວາມ usps,
ຂໍ້ຄວາມ geoid,
aland bigint,
ນ້ໍາໃຫຍ່,
aland_sqmi ຄວາມແມ່ນຍໍາສອງເທົ່າ,
awater_sqmi ຄວາມແມ່ນຍໍາສອງເທົ່າ,
intptlat ຄວາມແມ່ນຍໍາສອງເທົ່າ,
intptlong ຄວາມແມ່ນຍໍາສອງເທົ່າ
);
ຍັງສັງເກດເຫັນວ່າຄໍາສັ່ງດຽວກັນຈະເຮັດວຽກຕໍ່ກັບສະບັບທີ່ເກັບໄວ້ຂອງຂໍ້ມູນດຽວກັນ,
ຕົວຢ່າງ: http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt.gz.
ສຸດທ້າຍ, ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າ pgloader ທໍາອິດດຶງເນື້ອຫາຈາກ HTTP URL
ມັນເຂົ້າໄປໃນໄຟລ໌ທ້ອງຖິ່ນ, ຫຼັງຈາກນັ້ນຂະຫຍາຍການເກັບຮັກສາເມື່ອມັນຖືກຮັບຮູ້ວ່າເປັນຫນຶ່ງ, ແລະພຽງແຕ່ຫຼັງຈາກນັ້ນ
ປະມວນຜົນໄຟລ໌ທີ່ຂະຫຍາຍຢູ່ໃນທ້ອງຖິ່ນ.
ໃນບາງກໍລະນີ, ບໍ່ວ່າຈະເນື່ອງຈາກວ່າ pgloader ບໍ່ມີການສະຫນັບສະຫນູນໂດຍກົງສໍາລັບຮູບແບບການເກັບຂອງທ່ານຫຼື
ບາງທີເນື່ອງຈາກວ່າການຂະຫຍາຍການຈັດເກັບບໍ່ເປັນໄປໄດ້ໃນສະພາບແວດລ້ອມຂອງທ່ານ, ທ່ານອາດຈະຕ້ອງການ
ນ້ໍາ ເນື້ອໃນຊື່ຈາກສະຖານທີ່ຫ່າງໄກສອກຫຼີກຂອງຕົນເຂົ້າໄປໃນ PostgreSQL. ນີ້ແມ່ນວິທີເຮັດ
ວ່າ, ການນໍາໃຊ້ຮົບເກົ່າທົດສອບ trick Unix Pipes:
curl http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt.gz \
| gunzip -c \
| pgloader --type csv \
--field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong"
--with "ຂ້າມ header = 1" \
-- ກັບ "ຊ່ອງຂໍ້ມູນຖືກຢຸດໂດຍ '\t'" \
- \
postgresql:///pgloader?districts_longlat
ໃນປັດຈຸບັນ OS ຈະດູແລການຖ່າຍທອດແລະ buffering ລະຫວ່າງເຄືອຂ່າຍແລະ
ຄໍາສັ່ງແລະ pgloader ຈະດູແລການຖ່າຍທອດຂໍ້ມູນລົງໄປ PostgreSQL.
ການອົບພະຍົບ ຈາກ SQLite
ຄໍາສັ່ງຕໍ່ໄປນີ້ຈະເປີດຖານຂໍ້ມູນ SQLite, ຄົ້ນພົບຄໍານິຍາມຕາຕະລາງຂອງມັນ
ລວມທັງດັດສະນີແລະກະແຈຕ່າງປະເທດ, ຍ້າຍຄໍານິຍາມເຫຼົ່ານັ້ນໃນຂະນະທີ່ casting ປະເພດຂໍ້ມູນ
ຂໍ້ມູນສະເພາະກັບ PostgreSQL ຂອງພວກເຂົາທຽບເທົ່າແລະຫຼັງຈາກນັ້ນຍ້າຍຂໍ້ມູນຜ່ານ:
ສ້າງໃໝ່
pgloader ./test/sqlite/sqlite.db postgresql:///newdb
ການອົບພະຍົບ ຈາກ MySQL
ພຽງແຕ່ສ້າງຖານຂໍ້ມູນບ່ອນທີ່ເປັນເຈົ້າພາບຂໍ້ມູນ MySQL ແລະຄໍານິຍາມແລະມີ pgloader ເຮັດ
ການເຄື່ອນຍ້າຍສໍາລັບທ່ານໃນບັນຊີຄໍາສັ່ງດຽວ:
ສ້າງb pagila
pgloader mysql://user@localhost/sakila postgresql:///pagila
ການດຶງ an ເກັບໄວ້ dbf ເອກະສານ ຈາກ a HTTP ໄລຍະໄກ ສະຖານທີ່
ມັນເປັນໄປໄດ້ສໍາລັບ pgloader ທີ່ຈະດາວໂຫລດໄຟລ໌ຈາກ HTTP, unarchive ມັນ, ແລະພຽງແຕ່ຫຼັງຈາກນັ້ນເປີດ
ມັນເພື່ອຄົ້ນພົບ schema ຈາກນັ້ນໂຫຼດຂໍ້ມູນ:
ສ້າງbfo
pgloader --type dbf http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/historiq2013.zip postgresql:///foo
ໃນທີ່ນີ້ມັນເປັນໄປບໍ່ໄດ້ສໍາລັບ pgloader ທີ່ຈະເດົາປະເພດຂອງແຫຼ່ງຂໍ້ມູນທີ່ມັນຖືກໃຫ້, ດັ່ງນັ້ນ
ມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະນໍາໃຊ້ --ປະເພດ ປ່ຽນເສັ້ນ ຄຳ ສັ່ງ.
BATCHES ແລະ ທົດແທນ ຄວາມງາມ
ເພື່ອໂຫລດຂໍ້ມູນໃສ່ PostgreSQL, pgloader ໃຊ້ COPY ໂປຣໂຕຄອນການຖ່າຍທອດ. ໃນຂະນະທີ່ນີ້ແມ່ນ
ວິທີການໂຫຼດຂໍ້ມູນໄວຂຶ້ນ, COPY ມີຈຸດອ່ອນທີ່ສໍາຄັນ: ທັນທີທີ່ PostgreSQL ປ່ອຍອອກມາ
ຂໍ້ຜິດພາດກັບຂໍ້ມູນນ້ອຍໆທີ່ຖືກສົ່ງໄປຫາມັນ, ບໍ່ວ່າບັນຫາໃດກໍ່ຕາມ, ຊຸດຂໍ້ມູນທັງຫມົດແມ່ນ
ປະຕິເສດໂດຍ PostgreSQL.
ເພື່ອເຮັດວຽກປະມານນັ້ນ, pgloader ຕັດຂໍ້ມູນເຂົ້າໄປໃນ ກຸ່ມ ຂອງ 25000 ແຖວຕໍ່ກັນ, ດັ່ງນັ້ນໃນເວລາທີ່
ບັນຫາທີ່ເກີດຂື້ນມັນພຽງແຕ່ສົ່ງຜົນກະທົບຕໍ່ຂໍ້ມູນຫຼາຍແຖວເທົ່ານັ້ນ. ແຕ່ລະຊຸດຈະຖືກເກັບໄວ້ໃນຄວາມຊົງຈໍາ
ໃນຂະນະທີ່ COPY streaming ເກີດຂຶ້ນ, ໃນຄໍາສັ່ງທີ່ຈະສາມາດຈັດການກັບຄວາມຜິດພາດບາງເກີດຂຶ້ນ.
ເມື່ອ PostgreSQL ປະຕິເສດ batch ທັງຫມົດ, pgloader ບັນທຶກຂໍ້ຄວາມຄວາມຜິດພາດຫຼັງຈາກນັ້ນແຍກອອກ.
ແຖວທີ່ບໍ່ດີຈາກແຖວທີ່ຍອມຮັບໂດຍການລອງແຖວທີ່ຖືກຈັດໃສ່ຄືນໃໝ່ໃນກຸ່ມນ້ອຍໆ. ເຮັດ
ວ່າ, pgloader parses CONTEXT ຂໍ້ຄວາມຜິດພາດຈາກການສໍາເນົາບໍ່ສໍາເລັດ, ເປັນຂໍ້ຄວາມ
ປະກອບມີຕົວເລກແຖວທີ່ພົບຂໍ້ຜິດພາດໃນຊຸດ, ດັ່ງຕໍ່ໄປນີ້
ຍົກຕົວຢ່າງ:
ເນື້ອໃນ: ສຳເນົາຂໍ້ຜິດພາດ, ແຖວທີ 3, ຖັນ b: "2006-13-11"
ການນໍາໃຊ້ຂໍ້ມູນນັ້ນ, pgloader ຈະໂຫຼດແຖວທັງຫມົດໃນ batch ກ່ອນທີ່ຈະຜິດພາດ
ອັນໜຶ່ງ, ບັນທຶກຂໍ້ຜິດພາດທີ່ຖືກປະຕິເສດ, ຈາກນັ້ນລອງໂຫຼດຊຸດທີ່ເຫຼືອຢູ່ໃນ
ຄວາມພະຍາຍາມຄັ້ງດຽວ, ເຊິ່ງອາດມີ ຫຼືບໍ່ມີຂໍ້ມູນຜິດພາດອື່ນໆ.
ໃນຕອນທ້າຍຂອງການໂຫຼດທີ່ບັນຈຸແຖວທີ່ຖືກປະຕິເສດ, ທ່ານຈະພົບເຫັນສອງໄຟລ໌ຢູ່ໃນ root-dir
ສະຖານທີ່, ພາຍໃຕ້ໄດເລກະທໍລີທີ່ມີຊື່ດຽວກັນກັບຖານຂໍ້ມູນເປົ້າຫມາຍຂອງການຕິດຕັ້ງຂອງທ່ານ. ໄດ້
ຊື່ໄຟລ໌ແມ່ນຕາຕະລາງເປົ້າຫມາຍ, ແລະການຂະຫຍາຍຂອງພວກເຂົາແມ່ນ .dat ສໍາລັບຂໍ້ມູນທີ່ຖືກປະຕິເສດແລະ
.ບັນທຶກ ສໍາລັບໄຟລ໌ທີ່ມີບັນທຶກດ້ານລູກຄ້າ PostgreSQL ເຕັມກ່ຽວກັບຂໍ້ມູນທີ່ຖືກປະຕິເສດ.
ໄດ້ .dat ໄຟລ໌ຖືກຈັດຮູບແບບໃນ PostgreSQL ຮູບແບບຂໍ້ຄວາມ COPY ເປັນເອກະສານໃນ
http://www.postgresql.org/docs/9.2/static/sql-copy.html#AEN66609 .
A ຫມາຍເຫດ ກ່ຽວກັບ ຜົນງານ
pgloader ໄດ້ຮັບການພັດທະນາກັບການສະແດງຢູ່ໃນໃຈ, ເພື່ອໃຫ້ສາມາດຮັບມືກັບເຄີຍ
ຄວາມຕ້ອງການເພີ່ມຂຶ້ນໃນການໂຫຼດຂໍ້ມູນຈໍານວນຫລາຍເຂົ້າໄປໃນ PostgreSQL.
ສະຖາປັດຕະຍະກໍາພື້ນຖານທີ່ມັນໃຊ້ແມ່ນຮູບແບບທໍ່ Unix ເກົ່າ, ບ່ອນທີ່ thread ຮັບຜິດຊອບ
ສໍາລັບການໂຫຼດຂໍ້ມູນ (ການອ່ານໄຟລ໌ CSV, ສອບຖາມ MySQL, ແລະອື່ນໆ) ແລະຕື່ມຂໍ້ມູນການປຸງແຕ່ງກ່ອນ
ຂໍ້ມູນເຂົ້າໄປໃນຄິວ. ກະທູ້ອື່ນປ້ອນຈາກແຖວ, ນຳໃຊ້ບາງອັນ ການຫັນເປັນ
ຕໍ່ກັບຂໍ້ມູນການປ້ອນຂໍ້ມູນ ແລະຖ່າຍທອດຜົນສຸດທ້າຍໃຫ້ກັບ PostgreSQL ໂດຍໃຊ້ໂປຣໂຕຄໍ COPY.
ເມື່ອໃຫ້ໄຟລ໌ທີ່ PostgreSQL COPY ຄໍາສັ່ງຮູ້ວິທີການ parse, ແລະຖ້າຫາກວ່າໄຟລ໌
ບໍ່ມີຂໍ້ມູນທີ່ຜິດພາດ, ຫຼັງຈາກນັ້ນ pgloader ຈະບໍ່ໄວເທົ່າທີ່ຈະໃຊ້
PostgreSQL COPY ຄໍາສັ່ງ.
ໃຫ້ສັງເກດວ່າໃນຂະນະທີ່ COPY ຄໍາສັ່ງແມ່ນຈໍາກັດການອ່ານບໍ່ວ່າຈະຈາກການປ້ອນຂໍ້ມູນມາດຕະຖານຂອງຕົນຫຼື
ຈາກໄຟລ໌ທ້ອງຖິ່ນໃນລະບົບໄຟລ໌ຂອງເຄື່ອງແມ່ຂ່າຍ, ເຄື່ອງມືບັນທັດຄໍາສັ່ງ psql ປະຕິບັດກ
\ ສຳເນົາ ຄໍາສັ່ງທີ່ຮູ້ວິທີການຖ່າຍທອດໄຟລ໌ໃນທ້ອງຖິ່ນໄປຫາລູກຄ້າຜ່ານເຄືອຂ່າຍແລະ
ເຂົ້າໄປໃນເຄື່ອງແມ່ຂ່າຍ PostgreSQL, ໂດຍໃຊ້ໂປໂຕຄອນດຽວກັນກັບ pgloader ໃຊ້.
ແຫຼ່ງຂໍ້ມູນ ຮູບແບບ
pgloader ຮອງຮັບຮູບແບບການປ້ອນຂໍ້ມູນຕໍ່ໄປນີ້:
· csv, ເຊິ່ງລວມມີ tsv ແລະຕົວແປທົ່ວໄປອື່ນໆທີ່ທ່ານສາມາດປ່ຽນໄດ້
separator ແລະ ການອ້າງອີງ ກົດລະບຽບແລະວິທີການ escape ໄດ້ quote: ດ້ວຍຕົນເອງ;
· ໄຟລ໌ຖັນຄົງທີ່, ເຊິ່ງ pgloader ມີຄວາມຍືດຫຍຸ່ນພຽງພໍທີ່ຈະຮອງຮັບໄຟລ໌ແຫຼ່ງ
ຖັນທີ່ຂາດຫາຍໄປ (ຫຍາບ ຄົງ ຄວາມຍາວ ຖັນ ໄຟ ມີຢູ່);
· PostgreSLQ ສໍາເນົາໄຟລ໌ຮູບແບບ, ປະຕິບັດຕາມເອກະສານສໍາເນົາຂໍ້ຄວາມຂອງ PostgreSQL,
ເຊັ່ນ: ປະຕິເສດໄຟລ໌ທີ່ກະກຽມໂດຍ pgloader;
·ໄຟລ໌ dbase ທີ່ຮູ້ຈັກເປັນໄຟລ໌ db3 ຫຼື dbf;
· ixf ຮູບແບບໄຟລ໌, ixf ເປັນຮູບແບບການເກັບຮັກສາຖານສອງຈາກ IBM;
·ຖານຂໍ້ມູນ sqlite ທີ່ມີການຄົ້ນພົບອັດຕະໂນມັດຢ່າງເຕັມສ່ວນຂອງ schema ແລະກົດລະບຽບການໂຍນຂັ້ນສູງ;
·ຖານຂໍ້ມູນ mysql ທີ່ມີການຄົ້ນພົບອັດຕະໂນມັດຢ່າງເຕັມສ່ວນຂອງ schema ແລະກົດລະບຽບການໂຍນຂັ້ນສູງ;
· ຖານຂໍ້ມູນ MS SQL ທີ່ມີການຄົ້ນພົບແບບອັດຕະໂນມັດຢ່າງເຕັມສ່ວນຂອງ schema ແລະກົດລະບຽບການໂຍນຂັ້ນສູງ.
PGLOADER ສາມາດ SYNTAX
pgloader ປະຕິບັດພາສາສະເພາະຂອງໂດເມນທີ່ອະນຸຍາດໃຫ້ຕັ້ງຄ່າການໂຫຼດຂໍ້ມູນທີ່ຊັບຊ້ອນ
ສະຄຣິບຈັດການຖັນທີ່ຄຳນວນແລ້ວ ແລະທຳຄວາມສະອາດຢູ່ໃນຕົວຂອງຂໍ້ມູນການປ້ອນຂໍ້ມູນ. ສໍາລັບການເພີ່ມເຕີມ
ສະຖານະການການໂຫຼດຂໍ້ມູນທີ່ສັບສົນ, ທ່ານຈະຕ້ອງຮຽນຮູ້ syntax ຂອງ DSL. ມັນ
ຫມາຍເຖິງການເບິ່ງທີ່ຄຸ້ນເຄີຍກັບ DBA ໂດຍການໄດ້ຮັບການດົນໃຈໂດຍ SQL ບ່ອນທີ່ມັນມີຄວາມຫມາຍ, ເຊິ່ງບໍ່ແມ່ນ
ຫຼັງຈາກທີ່ທັງຫມົດ.
ຄໍາສັ່ງ pgloader ປະຕິບັດຕາມກົດລະບຽບໄວຍາກອນທົ່ວໂລກດຽວກັນ. ແຕ່ລະຄົນຂອງພວກເຂົາອາດຈະສະຫນັບສະຫນູນ
ພຽງແຕ່ຊຸດຍ່ອຍຂອງທາງເລືອກທົ່ວໄປແລະສະຫນອງທາງເລືອກສະເພາະ.
ໂຫຼດ
ຈາກ [ມີທົ່ງນາ ]
ເຂົ້າໄປໃນ [ ຖັນເປົ້າໝາຍ ]
[ດ້ວຍ ]
[ SET ]
[ ກ່ອນທີ່ຈະໂຫລດ [ເຮັດ | ປະຕິບັດ ] ... ]
[ ຫຼັງຈາກການໂຫຼດ [ເຮັດ | ປະຕິບັດ ] ... ]
;
ປະໂຫຍກຕົ້ນຕໍແມ່ນ ນ້ໍາຫນັກ, ຈາກ, ເຂົ້າໄປ ແລະ ກັບ clauses ທີ່ແຕ່ລະຄໍາສັ່ງປະຕິບັດ.
ບາງຄໍາສັ່ງຫຼັງຈາກນັ້ນປະຕິບັດ SET ຄໍາສັ່ງ, ຫຼືບາງຂໍ້ສະເພາະເຊັ່ນ: ສົ່ງສັນຍານ
ອານຸປະໂຫຍດ.
COMMON ຂໍ້
ບາງຂໍ້ແມ່ນທົ່ວໄປກັບຄໍາສັ່ງທັງຫມົດ:
· ຈາກ
ໄດ້ ຈາກ clause ກໍານົດບ່ອນທີ່ຈະອ່ານຂໍ້ມູນຈາກ, ແລະແຕ່ລະຄໍາສັ່ງແນະນໍາຂອງມັນ
ຕົວແປຂອງຕົນເອງຂອງແຫຼ່ງ. ສໍາລັບຕົວຢ່າງ, ໄດ້ CSV ແຫຼ່ງສະຫນັບສະຫນູນ inline, stdin, ເປັນ
ຊື່ໄຟລ໌, ຊື່ໄຟລ໌ອ້າງອີງ, ແລະ ກ ຊື່ເອກະສານ ການສົນທະນາ clause (ເບິ່ງຂ້າງເທິງ); ໃນຂະນະທີ່
MySQL ແຫຼ່ງທີ່ຮອງຮັບສະເພາະຖານຂໍ້ມູນ MySQL URI ເທົ່ານັ້ນ.
ໃນກໍລະນີທັງຫມົດ, ໄດ້ ຈາກ clause ສາມາດອ່ານມູນຄ່າຂອງມັນຈາກຕົວແປສະພາບແວດລ້ອມ
ເມື່ອໃຊ້ແບບຟອມ GETENV 'ຊື່'.
· ເຂົ້າໄປ
URI ການເຊື່ອມຕໍ່ PostgreSQL ຕ້ອງມີຊື່ຂອງຕາຕະລາງເປົ້າຫມາຍທີ່ຈະໂຫລດ
ຂໍ້ມູນເຂົ້າໄປໃນ. ຕາຕະລາງນັ້ນຕ້ອງຖືກສ້າງຂື້ນແລ້ວໃນ PostgreSQL, ແລະຊື່
ອາດຈະເປັນ schema ມີຄຸນສົມບັດ.
ໄດ້ ເຂົ້າໄປ ການເຊື່ອມຕໍ່ຖານຂໍ້ມູນເປົ້າຫມາຍ URI ສາມາດຖືກແຍກອອກຈາກມູນຄ່າຂອງສະພາບແວດລ້ອມ
ຕົວປ່ຽນແປງໃນເວລາທີ່ໃຊ້ແບບຟອມ GETENV 'ຊື່'.
ຫຼັງຈາກນັ້ນ, ເຂົ້າໄປ ທາງເລືອກຍັງສະຫນັບສະຫນູນບັນຊີລາຍການທີ່ແຍກອອກດ້ວຍເຄື່ອງຫມາຍຈຸດຂອງຖັນເປົ້າຫມາຍ,
ຊຶ່ງເປັນຊື່ຂອງການປ້ອນຂໍ້ມູນ ພາກສະຫນາມ ຫຼືບັນຊີລາຍຊື່ທີ່ແຍກອອກຈາກພື້ນທີ່ສີຂາວຂອງ
ຊື່ຖັນເປົ້າໝາຍ, ປະເພດຂໍ້ມູນ PostgreSQL ຂອງມັນ ແລະ a ການ ນຳ ໃຊ້ ການສະແດງອອກ.
ໄດ້ ການ ນຳ ໃຊ້ ການສະແດງອອກສາມາດເປັນແບບຟອມ Lisp ທົ່ວໄປທີ່ຖືກຕ້ອງແລະຈະຖືກອ່ານດ້ວຍ
ຊຸດປັດຈຸບັນຕັ້ງເປັນ pgloader.transforms, ດັ່ງນັ້ນທ່ານສາມາດນໍາໃຊ້ຫນ້າທີ່ກໍານົດໃນ
ຊຸດນັ້ນ, ເຊັ່ນຟັງຊັນທີ່ໂຫລດແບບໄດນາມິກກັບ -- ໂຫຼດ ເສັ້ນຄໍາສັ່ງ
ພາລາມິເຕີ.
ແຕ່ລະຄົນ ການ ນຳ ໃຊ້ ການສະແດງອອກແມ່ນລວບລວມໃນເວລາແລ່ນໄປຫາລະຫັດພື້ນເມືອງ.
ຄຸນສົມບັດນີ້ອະນຸຍາດໃຫ້ pgloader ສາມາດໂຫຼດຊ່ອງຂໍ້ມູນຕ່າງໆໃນໄຟລ໌ CSV ເຂົ້າໄປໃນ a
ອາດຈະເປັນຈໍານວນຄໍລໍາທີ່ແຕກຕ່າງກັນໃນຖານຂໍ້ມູນ, ການນໍາໃຊ້ລະຫັດທີ່ກໍາຫນົດເອງສໍາລັບການນັ້ນ
ການຄາດຄະເນ.
· ກັບ
ຊຸດຂອງທາງເລືອກທີ່ຈະນໍາໃຊ້ກັບຄໍາສັ່ງ, ການນໍາໃຊ້ syntax ທົ່ວໂລກຂອງບໍ່ວ່າຈະ:
· ທີ່ສໍາຄັນ = ມູນຄ່າ
· ການນໍາໃຊ້ ທາງເລືອກ
· do ບໍ່ ການນໍາໃຊ້ ທາງເລືອກ
ເບິ່ງແຕ່ລະຄໍາສັ່ງສະເພາະສໍາລັບລາຍລະອຽດ.
· SET
ຂໍ້ນີ້ອະນຸຍາດໃຫ້ກໍານົດພາລາມິເຕີຂອງເຊດຊັນທີ່ຖືກກໍານົດໄວ້ສໍາລັບທຸກເຊດຊັນທີ່ເປີດ
ໂດຍ pgloader. ມັນຄາດຫວັງວ່າບັນຊີລາຍຊື່ຂອງຊື່ພາລາມິເຕີ, ເຄື່ອງຫມາຍເທົ່າທຽມກັນ, ຫຼັງຈາກນັ້ນໄດ້
ຄ່າທີ່ອ້າງອີງດຽວເປັນລາຍການທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ.
ຊື່ແລະຄ່າຂອງພາລາມິເຕີບໍ່ໄດ້ຖືກກວດສອບໂດຍ pgloader, ພວກເຂົາຖືກມອບໃຫ້
ຄືກັບ PostgreSQL.
· ກ່ອນ ນ້ໍາຫນັກ DO
ທ່ານສາມາດດໍາເນີນການສອບຖາມ SQL ຕໍ່ກັບຖານຂໍ້ມູນກ່ອນທີ່ຈະໂຫລດຂໍ້ມູນຈາກ CSV
ໄຟລ໌. ຄໍາຖາມ SQL ທົ່ວໄປທີ່ສຸດແມ່ນ ສ້າງ ຕາຕະລາງ IF ບໍ່ ມີຢູ່ ດັ່ງນັ້ນຂໍ້ມູນສາມາດ
ໂຫຼດແລ້ວ.
ແຕ່ລະຄໍາສັ່ງຕ້ອງເປັນ ໂດລາ-quoted: ມັນຕ້ອງເລີ່ມຕົ້ນແລະສິ້ນສຸດດ້ວຍເຄື່ອງຫມາຍສອງໂດລາ,
$$. ຈາກນັ້ນຄຳຊອກຫາທີ່ອ້າງອີງຈາກເງິນໂດລາຈະຖືກແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ. ບໍ່ຄາດວ່າຈະມີເຄື່ອງໝາຍວັກຕອນເພີ່ມເຕີມ
ຫຼັງຈາກຄໍາຖາມ SQL ສຸດທ້າຍ.
· ກ່ອນ ນ້ໍາຫນັກ ສະຫຼຸບ
ພຶດຕິກໍາດຽວກັນກັບໃນ ກ່ອນ ນ້ໍາຫນັກ DO ຂໍ້. ອະນຸຍາດໃຫ້ທ່ານອ່ານຄໍາຖາມ SQL
ຈາກໄຟລ໌ SQL. ປະຕິບັດການສະຫນັບສະຫນູນສໍາລັບ PostgreSQL dollar-quoting ແລະ \i ແລະ \ir
ລວມເອົາສິ່ງອໍານວຍຄວາມສະດວກຕ່າງໆເຊັ່ນໃນ psql ຮູບແບບ batch (ບ່ອນທີ່ພວກເຂົາແມ່ນສິ່ງດຽວກັນ).
· AFTER ນ້ໍາຫນັກ DO
ຮູບແບບດຽວກັນກັບ ກ່ອນ ນ້ໍາຫນັກ DO, ຄໍາຖາມທີ່ອ້າງເຖິງເງິນໂດລາທີ່ພົບເຫັນຢູ່ໃນພາກນັ້ນແມ່ນ
ປະຕິບັດເມື່ອການໂຫຼດສໍາເລັດ. ນັ້ນແມ່ນເວລາທີ່ເຫມາະສົມທີ່ຈະສ້າງດັດສະນີແລະ
ຂໍ້ຈໍາກັດ, ຫຼືເປີດໃຊ້ triggers ຄືນໃໝ່.
· AFTER ນ້ໍາຫນັກ ສະຫຼຸບ
ພຶດຕິກໍາດຽວກັນກັບໃນ AFTER ນ້ໍາຫນັກ DO ຂໍ້. ອະນຸຍາດໃຫ້ທ່ານອ່ານຄໍາຖາມ SQL ຈາກ
ໄຟລ໌ SQL. ປະຕິບັດການສະຫນັບສະຫນູນສໍາລັບ PostgreSQL dollar-quoting ແລະ \i ແລະ \ir
ລວມເອົາສິ່ງອໍານວຍຄວາມສະດວກຕ່າງໆເຊັ່ນໃນ psql ຮູບແບບ batch (ບ່ອນທີ່ພວກເຂົາແມ່ນສິ່ງດຽວກັນ).
ການເຊື່ອມຕໍ່ string
ໄດ້ ພາລາມິເຕີຄາດວ່າຈະໃຫ້ເປັນ ການເຊື່ອມຕໍ່ URI ເປັນເອກະສານ
ໃນເອກະສານ PostgreSQL ຢູ່
http://www.postgresql.org/docs/9.3/static/libpq-connect.html#LIBPQ-CONNSTRING.
postgresql://[user[:password]@][netloc][:port][/dbname][?option=value&...]
ບ່ອນທີ່:
· ຜູ້ໃຊ້
ສາມາດມີຕົວອັກສອນໃດນຶ່ງ, ລວມທັງຈໍ້າສອງເມັດ (:) ຊຶ່ງຫຼັງຈາກນັ້ນຕ້ອງໄດ້ຮັບສອງເທົ່າ (::) ແລະ
ເຄື່ອງໝາຍ (@) ຊຶ່ງຫຼັງຈາກນັ້ນຕ້ອງໄດ້ຮັບສອງເທົ່າ (@@).
ເມື່ອຖືກລະເວັ້ນ, ໄດ້ ຜູ້ໃຊ້ ຊື່ເລີ່ມຕົ້ນເປັນຄ່າຂອງ PGUSER ການປ່ຽນແປງສະພາບແວດລ້ອມ,
ແລະຖ້າມັນບໍ່ໄດ້ຖືກຕັ້ງ, ຄ່າຂອງ ຜູ້ໃຊ້ environment variable
· ລະຫັດຜ່ານ
ສາມາດປະກອບດ້ວຍຕົວອັກສອນໃດຫນຶ່ງ, ລວມທັງການຢູ່ໃນເຄື່ອງຫມາຍ (@) ຊຶ່ງຫຼັງຈາກນັ້ນຕ້ອງໄດ້ຮັບສອງເທົ່າ (@@).
ເພື່ອປ່ອຍໃຫ້ລະຫັດຜ່ານຫວ່າງເປົ່າ, ເມື່ອ ຜູ້ໃຊ້ ຊື່ລົງທ້າຍດ້ວຍເຄື່ອງໝາຍ, ຈາກນັ້ນເຈົ້າຕ້ອງ
ໃຊ້ syntax user:@.
ເມື່ອຖືກລະເວັ້ນ, ໄດ້ ລະຫັດຜ່ານ defaults ກັບຄ່າຂອງ PGPASSWORD ສະພາບແວດລ້ອມ
ຕົວແປຖ້າມັນຖືກຕັ້ງ, ຖ້າບໍ່ດັ່ງນັ້ນລະຫັດຜ່ານຈະຖືກປະໄວ້ໂດຍບໍ່ໄດ້ຕັ້ງ.
· netloc
ສາມາດເປັນຊື່ໂຮດໃນເຄື່ອງໝາຍຈຸດ, ຫຼື ipv4, ຫຼືຊັອກເກັດໂດເມນ Unix.
ເສັ້ນທາງ. ຫວ່າງເປົ່າແມ່ນສະຖານທີ່ເຄືອຂ່າຍເລີ່ມຕົ້ນ, ພາຍໃຕ້ການສະຫນອງລະບົບ Unix ໂດເມນ
socket ວິທີການນັ້ນແມ່ນມັກ, ຖ້າບໍ່ດັ່ງນັ້ນ netloc ເລີ່ມຕົ້ນເປັນ localhost.
ມັນເປັນໄປໄດ້ທີ່ຈະບັງຄັບ Unix ໂດເມນ socket ເສັ້ນທາງໂດຍການໃຊ້ syntax
unix:/path/to/where/the/socket/file/is, ດັ່ງນັ້ນເພື່ອບັງຄັບເສັ້ນທາງຊັອກເກັດທີ່ບໍ່ແມ່ນມາດຕະຖານແລະ a
ບໍ່ແມ່ນພອດເລີ່ມຕົ້ນ, ເຈົ້າຈະມີ:
postgresql://unix:/ tmp: 54321/dbname
ໄດ້ netloc defaults ກັບຄ່າຂອງ PGHOST ສະພາບແວດລ້ອມປ່ຽນແປງໄດ້, ແລະຖ້າມັນບໍ່ໄດ້ຖືກຕັ້ງ,
ເປັນຄ່າເລີ່ມຕົ້ນ Unix ເສັ້ນທາງຊັອກເກັດໃນເວລາທີ່ແລ່ນຢູ່ໃນລະບົບ Unix, ແລະ localhost
ຖ້າບໍ່ດັ່ງນັ້ນ.
· dbname
ຄວນເປັນຕົວລະບຸທີ່ຖືກຕ້ອງ (ຕົວອັກສອນຕາມດ້ວຍຕົວໜັງສືປະສົມ, ຕົວເລກ ແລະ ຕົວໜັງສື
ເຄື່ອງໝາຍຈຸດເຄື່ອງໝາຍຈຸດ (,), dash (-) ແລະຂີດກ້ອງ (_).
ເມື່ອຖືກລະເວັ້ນ, ໄດ້ dbname ເປັນຄ່າເລີ່ມຕົ້ນຂອງຕົວແປສະພາບແວດລ້ອມ PGDATABASE,
ແລະຖ້າຫາກວ່າບໍ່ໄດ້ຕັ້ງຄ່າ, ກັບ ຜູ້ໃຊ້ ມູນຄ່າຕາມທີ່ໄດ້ກໍານົດຂ້າງເທິງ.
· ທາງເລືອກໃນການ
ຕົວກໍານົດການທາງເລືອກຕ້ອງໄດ້ຮັບການສະຫນອງໃຫ້ກັບແບບຟອມ name=value, ແລະທ່ານອາດຈະໃຊ້
ຕົວກໍານົດການຫຼາຍໂດຍການແຍກພວກມັນອອກໄປໂດຍໃຊ້ ampersand (&) ລັກສະນະ.
ມີພຽງບາງທາງເລືອກທີ່ຮອງຮັບຢູ່ທີ່ນີ້, ຊື່ຕາຕະລາງ (ເຊິ່ງອາດມີຄຸນສົມບັດກັບ ກ
ຊື່ schema) sslmode, ເຈົ້າພາບ, port, dbname, ຜູ້ໃຊ້ ແລະ ລະຫັດຜ່ານ.
ໄດ້ sslmode ຄ່າພາລາມິເຕີສາມາດເປັນຫນຶ່ງໃນ ປິດການໃຊ້ວຽກ, ອະນຸຍາດໃຫ້, ມັກ or ຕ້ອງການ.
ສໍາລັບເຫດຜົນຄວາມເຂົ້າກັນໄດ້ໃນດ້ານຫລັງ, ມັນເປັນໄປໄດ້ທີ່ຈະລະບຸ ຊື່ຕາຕະລາງ ທາງເລືອກ
ໂດຍກົງ, ໂດຍບໍ່ມີການສະກົດຄໍາ ຊື່ຕາຕະລາງ= ພາກສ່ວນ.
ທາງເລືອກໃນການ override ອົງປະກອບ URI ຕົ້ນຕໍໃນເວລາທີ່ທັງສອງໄດ້ຖືກມອບໃຫ້, ແລະການນໍາໃຊ້
ຕົວກໍານົດການທາງເລືອກທີ່ເຂົ້າລະຫັດຮ້ອຍລະອະນຸຍາດໃຫ້ໃຊ້ລະຫັດຜ່ານເລີ່ມຕົ້ນດ້ວຍຈໍ້າສອງເມັດແລະ
ຂ້າມຂໍ້ຈຳກັດການວິເຄາະອົງປະກອບ URI ອື່ນໆ.
ເປັນປົກກະຕິ ສຳ ນວນ
ຫຼາຍຂໍ້ທີ່ລະບຸໄວ້ໃນຕໍ່ໄປນີ້ຍອມຮັບ ປົກກະຕິ expressions ກັບສິ່ງຕໍ່ໄປນີ້
ກົດລະບຽບການປ້ອນຂໍ້ມູນ:
· ການສະແດງອອກປົກກະຕິເລີ່ມຕົ້ນດ້ວຍເຄື່ອງໝາຍ tilde (~),
·ຫຼັງຈາກນັ້ນແມ່ນປະຕິບັດດ້ວຍເຄື່ອງຫມາຍເປີດ,
· ຫຼັງຈາກນັ້ນ, ຕົວອັກສອນໃດນຶ່ງໄດ້ຖືກອະນຸຍາດ ແລະຖືວ່າເປັນສ່ວນໜຶ່ງຂອງການສະແດງຜົນປົກກະຕິ, ຍົກເວັ້ນ
ສໍາລັບເຄື່ອງຫມາຍປິດ,
· ຄາດວ່າຈະມີປ້າຍປິດ.
ປ້າຍເປີດແລະປິດແມ່ນອະນຸຍາດໂດຍຄູ່, ນີ້ແມ່ນບັນຊີລາຍຊື່ຄົບຖ້ວນຂອງອະນຸຍາດ
ຕົວຂັ້ນ:
~//
~[]
~{}
~()
~<>
~""
~'
~||
~##
ເລືອກຊຸດຕົວຂັ້ນທີ່ບໍ່ຂັດກັນກັບ ປົກກະຕິ ການສະແດງອອກ ເຈົ້າພະຍາຍາມ
ວັດສະດຸປ້ອນ. ຖ້າການສະແດງອອກຂອງເຈົ້າເປັນເຊັ່ນວ່າບໍ່ມີການແກ້ໄຂໃດໆທີ່ອະນຸຍາດໃຫ້ທ່ານເຂົ້າໄປໃນມັນ,
ສະຖານທີ່ບ່ອນທີ່ການສະແດງອອກດັ່ງກ່າວຖືກອະນຸຍາດຄວນອະນຸຍາດໃຫ້ມີບັນຊີລາຍຊື່ຂອງການສະແດງອອກ.
ຄວາມຄິດເຫັນ
ຄໍາສັ່ງໃດຫນຶ່ງອາດຈະມີຄໍາຄິດເຫັນ, ປະຕິບັດຕາມກົດລະບຽບການປ້ອນຂໍ້ມູນເຫຼົ່ານີ້:
· ໄດ້ -- delimiter ເລີ່ມຕົ້ນຄໍາຄິດຄໍາເຫັນທີ່ສິ້ນສຸດດ້ວຍຈຸດສິ້ນສຸດຂອງເສັ້ນປະຈຸບັນ,
· ຕົວຊີ້ວັດ /* ແລະ */ ຕາມລໍາດັບເລີ່ມຕົ້ນແລະສິ້ນສຸດຄໍາເຫັນ, ເຊິ່ງສາມາດພົບໄດ້ໃນ
ກາງຂອງຄໍາສັ່ງຫຼື span ຫຼາຍສາຍ.
ສະຖານທີ່ໃດກໍ່ຕາມທີ່ທ່ານສາມາດເຂົ້າໄປໃນ a ຍະຫວ່າງ ຈະຍອມຮັບຄໍາຄິດເຫັນເຊັ່ນກັນ.
Batch ພຶດຕິກໍາ ທາງເລືອກໃນການ
ຄໍາສັ່ງ pgloader ທັງຫມົດມີການສະຫນັບສະຫນູນສໍາລັບ a ກັບ clause ທີ່ອະນຸຍາດໃຫ້ສໍາລັບການລະບຸທາງເລືອກ.
ບາງທາງເລືອກແມ່ນທົ່ວໄປແລະຍອມຮັບໂດຍຄໍາສັ່ງທັງຫມົດ, ເຊັ່ນ: batch ພຶດຕິກໍາ
ທາງເລືອກໃນການ, ແລະບາງທາງເລືອກແມ່ນສະເພາະກັບປະເພດແຫຼ່ງຂໍ້ມູນ, ເຊັ່ນ CSV ຂ້າມ header
ທາງເລືອກ.
ທາງເລືອກການປະຕິບັດ batch ທົ່ວໂລກແມ່ນ:
· batch ແຖວ
ເອົາຄ່າຕົວເລກເປັນ argument, ໃຊ້ເປັນຈຳນວນສູງສຸດຂອງແຖວທີ່ອະນຸຍາດໃນ a
ຊຸດ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 25 000 ແລະສາມາດປ່ຽນແປງໄດ້ເພື່ອພະຍາຍາມມີການສະແດງທີ່ດີກວ່າ
ຄຸນລັກສະນະຫຼືເພື່ອຄວບຄຸມການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາ pgloader;
· batch ຂະຫນາດ
ເອົາຫນ່ວຍຄວາມຈໍາເປັນການໂຕ້ຖຽງ, ເຊັ່ນ: 20 MB, ຄ່າເລີ່ມຕົ້ນຂອງມັນ. ຍອມຮັບ
ຕົວຄູນແມ່ນ kB, MB, GB, TB ແລະ PB. ກໍລະນີແມ່ນສໍາຄັນເພື່ອບໍ່ໃຫ້ສັບສົນ
ກ່ຽວກັບ bits ທຽບກັບ bytes, ພວກເຮົາພຽງແຕ່ເວົ້າ bytes ຢູ່ທີ່ນີ້.
· batch ພ້ອມກັນ
ເອົາຄ່າຕົວເລກເປັນ argument, ເລີ່ມຕົ້ນເປັນ 10. ນັ້ນແມ່ນຈໍານວນຊຸດທີ່
pgloader ແມ່ນອະນຸຍາດໃຫ້ສ້າງໃນຫນ່ວຍຄວາມຈໍາ, ເຖິງແມ່ນວ່າພຽງແຕ່ batch ດຽວໃນເວລາອາດຈະ
ຖືກສົ່ງໄປຫາ PostgreSQL.
ສະຫນັບສະຫນູນຫຼາຍກ່ວາ batch ດຽວທີ່ຖືກສົ່ງໃນເວລານັ້ນແມ່ນຢູ່ໃນບັນຊີລາຍຊື່ TODO ຂອງ
pgloader, ແຕ່ຍັງບໍ່ໄດ້ປະຕິບັດເທື່ອ. ຕົວເລືອກນີ້ແມ່ນກ່ຽວກັບການຄວບຄຸມຄວາມຊົງຈໍາ
ຄວາມຕ້ອງການຂອງ pgloader ເປັນການຄ້າກັບຄຸນລັກສະນະຂອງການສະແດງ, ແລະບໍ່ແມ່ນກ່ຽວກັບ
ການເຄື່ອນໄຫວຂະຫນານຂອງ pgloader.
ທາງເລືອກອື່ນແມ່ນສະເພາະແຕ່ລະແຫຼ່ງຂໍ້ມູນ, ກະລຸນາເບິ່ງພາກສ່ວນສະເພາະຂອງ
ເອກະສານສໍາລັບລາຍຊື່ແລະການປົກຫຸ້ມຂອງເຂົາເຈົ້າ.
ຫຼັງຈາກນັ້ນ batch ໄດ້ຖືກປິດໃນທັນທີທີ່ທັງຫມົດ batch ແຖວ ຫຼື batch ຂະຫນາດ ເກນແມ່ນ
ຂ້າມ, ອັນໃດມາກ່ອນ. ໃນກໍລະນີທີ່ batch ຕ້ອງໄດ້ຮັບການປິດເນື່ອງຈາກວ່າ
batch ຂະຫນາດ ການຕັ້ງຄ່າ, ກ debug ຂໍ້ຄວາມບັນທຶກລະດັບແມ່ນພິມອອກດ້ວຍຈໍານວນແຖວທີ່ເຫມາະໃນການ
ຂະຫນາດໃຫຍ່ ຊຸດ.
ນ້ໍາຫນັກ CSV
ຄໍາສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫລດຂໍ້ມູນຈາກ a CSV ໄຟລ໌. ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫລດ CSV
ຈາກ 'GeoLiteCity-Blocks.csv' ດ້ວຍການເຂົ້າລະຫັດ iso-646-us
ມີທົ່ງນາ
(
startIpNum, endIpNum, locId
)
ເຂົ້າໄປໃນ postgresql://user@localhost:54393/dbname?geolite.blocks
ຖັນເປົ້າໝາຍ
(
iprange ip4r ໂດຍໃຊ້ (ip-range startIpNum endIpNum),
locId
)
ດ້ວຍການຕັດສັ້ນ,
ຂ້າມຫົວ = 2,
ຊ່ອງຂໍ້ມູນປິດລ້ອມເປັນທາງເລືອກໂດຍ ´"´,
ຊ່ອງທີ່ຫລົບຫນີໂດຍ backslash-quote,
ຊ່ອງຂໍ້ມູນສິ້ນສຸດໂດຍ '\t'
SET work_mem ເປັນ ´32 MB´, maintenance_work_mem ເປັນ ´64 MB´;
ໄດ້ csv ຄໍາສັ່ງຮູບແບບຍອມຮັບຂໍ້ຕໍ່ໄປນີ້ແລະທາງເລືອກ:
· ຈາກ
ຊື່ໄຟລ໌ທີ່ຈະໂຫລດຂໍ້ມູນຈາກ. ຍອມຮັບ ກຳລັງເຂົ້າລະຫັດ ທາງເລືອກ. ໃຊ້
--list-encodes ທາງເລືອກທີ່ຈະຮູ້ວ່າຊື່ການເຂົ້າລະຫັດໃດໄດ້ຮັບການສະຫນັບສະຫນູນ.
ຊື່ໄຟລ໌ອາດຈະຖືກຫຸ້ມດ້ວຍວົງຢືມດຽວ, ແລະສາມາດເປັນຫນຶ່ງໃນຕໍ່ໄປນີ້
ຄຸນຄ່າພິເສດ:
· inline
ຂໍ້ມູນຖືກພົບເຫັນຫຼັງຈາກສິ້ນສຸດຂອງຄໍາສັ່ງທີ່ແຍກວິເຄາະ. ຈໍານວນເສັ້ນຫວ່າງໃດໆ
ລະຫວ່າງການສິ້ນສຸດຂອງຄໍາສັ່ງແລະການເລີ່ມຕົ້ນຂອງຂໍ້ມູນຖືກຍອມຮັບ.
· stdin
ອ່ານຂໍ້ມູນຈາກກະແສການປ້ອນຂໍ້ມູນມາດຕະຖານ.
· FILENAMES ການສົນທະນາ
ທັງຫມົດ ການຈັບຄູ່ clause ຕ້ອງປະຕິບັດຕາມກົດລະບຽບດັ່ງຕໍ່ໄປນີ້:
[ທຸກ FILENAMES | [ FIRST ] FILENAME ]
ການຈັບຄູ່ regexp
[ຢູ່ໃນໄດເລກະທໍລີ ´...´ ]
ໄດ້ ການຈັບຄູ່ ຂໍ້ທີ່ໃຊ້ໄດ້ຮັບການໃຫ້ ປົກກະຕິ ການສະແດງອອກ (ເບິ່ງຂ້າງເທິງສໍາລັບ syntax ທີ່ແນ່ນອນ, ຫຼາຍ
ທາງເລືອກສາມາດນໍາໃຊ້ທີ່ນີ້) ກັບຊື່ໄຟລ໌. ຫຼັງຈາກນັ້ນ, ມັນເປັນໄປໄດ້ທີ່ຈະໂຫຼດຂໍ້ມູນຈາກພຽງແຕ່
ການແຂ່ງຂັນຄັ້ງທໍາອິດຂອງພວກເຂົາທັງຫມົດ.
ທາງເລືອກ IN ທິດທາງ clause ອະນຸຍາດໃຫ້ລະບຸວ່າລະບົບທີ່ຈະຍ່າງສໍາລັບການຊອກຫາໄດ້
ໄຟລ໌ຂໍ້ມູນ, ແລະສາມາດຖືກປຽບທຽບກັບບ່ອນທີ່ໄຟລ໌ຄໍາສັ່ງຖືກອ່ານຈາກ, ຫຼື
ຢ່າງແທ້ຈິງ. ໄດເລກະທໍລີທີ່ລະບຸຕ້ອງມີຢູ່.
ໄດ້ ຈາກ ທາງເລືອກຍັງສະຫນັບສະຫນູນບັນຊີລາຍຊື່ທີ່ແຍກອອກເປັນເຄື່ອງຫມາຍຈຸດທາງເລືອກຂອງ ພາກສະຫນາມ ຊື່ອະທິບາຍ
ສິ່ງທີ່ຄາດວ່າຈະຢູ່ໃນ CSV ໄຟລ໌ຂໍ້ມູນ, ແນະນໍາທາງເລືອກໂດຍຂໍ້ ແລ່ນ ທົ່ງນາ.
ຊື່ແຕ່ລະຊ່ອງສາມາດເປັນພຽງຊື່ດຽວ ຫຼືຊື່ຕໍ່ໄປນີ້ກັບຜູ້ອ່ານສະເພາະ
ທາງເລືອກສໍາລັບພາກສະຫນາມນັ້ນ, enclosed ໃນວົງເລັບສີ່ຫຼ່ຽມແລະເຄື່ອງຫມາຍຈຸດທີ່ແຍກອອກ. ສະຫນັບສະຫນູນ
ທາງເລືອກຂອງຜູ້ອ່ານຕໍ່ພາກສະຫນາມແມ່ນ:
· ສິ້ນສຸດລົງ by
ເບິ່ງລາຍລະອຽດຂອງ ພາກສະຫນາມ ສິ້ນສຸດລົງ by ຂ້າງລຸ່ມນີ້.
ການປຸງແຕ່ງທາງເລືອກນີ້ບໍ່ໄດ້ປະຕິບັດໃນປັດຈຸບັນ.
· ວັນ ຮູບແບບ
ໃນເວລາທີ່ພາກສະຫນາມຄາດວ່າຈະເປັນປະເພດວັນທີ, ຫຼັງຈາກນັ້ນທາງເລືອກນີ້ອະນຸຍາດໃຫ້ກໍານົດການ
ຮູບແບບວັນທີທີ່ໃຊ້ໃນໄຟລ໌.
ສະຕຣິງຮູບແບບວັນທີແມ່ນສະຕຣິງແມ່ແບບທີ່ສ້າງແບບຈໍາລອງກັບ PostgreSQL to_char
ສະຫນັບສະຫນູນສະຕຣິງແມ່ແບບ, ຈໍາກັດຮູບແບບດັ່ງຕໍ່ໄປນີ້:
· YYYY, YYY, YY ສໍາລັບພາກສ່ວນປີ
· MM ສໍາລັບພາກສ່ວນເດືອນຕົວເລກ
· DD ສໍາລັບພາກສ່ວນມື້ຕົວເລກ
· HH, HH12, HH24 ສໍາລັບພາກສ່ວນຊົ່ວໂມງ
· am, AM, am, AM
· ແລງ, ແລງ, ແລງ, ແລງ
· MI ສໍາລັບພາກສ່ວນນາທີ
· SS ສໍາລັບພາກສ່ວນວິນາທີ
· MS ສໍາລັບສ່ວນ milliseconds (4 ຕົວເລກ)
·ສະຫະລັດສໍາລັບ microseconds (6 ຕົວເລກ)
· ເຄື່ອງໝາຍວັກຕອນທີ່ບໍ່ໄດ້ວິເຄາະ: - . * # @ T / \ ແລະຊ່ອງ
ນີ້ແມ່ນຕົວຢ່າງຂອງ a ວັນ ຮູບແບບ ຂໍ້ມູນ:
ຊື່ຖັນ [ຮູບແບບວັນທີ 'YYYY-MM-DD HH24-MI-SS.US']
· null if
ຕົວເລືອກນີ້ໃຊ້ເວລາການໂຕ້ຖຽງເຊິ່ງເປັນຄໍາສໍາຄັນ ເປົ່າຫວ່າງ ຫຼືສອງວົງຢືມ
string
ເມື່ອໃດ ເປົ່າຫວ່າງ ຖືກນໍາໃຊ້ແລະຄ່າພາກສະຫນາມທີ່ຖືກອ່ານມີພຽງແຕ່ຕົວອັກສອນຍະຫວ່າງ,
ຫຼັງຈາກນັ້ນ, ມັນຈະຖືກປ່ຽນເປັນ SQL ໂດຍອັດຕະໂນມັດ NULL ມູນຄ່າ.
ເມື່ອສະຕຣິງທີ່ອ້າງອີງຄູ່ຖືກໃຊ້ ແລະສະຕຣິງນັ້ນຖືກອ່ານເປັນຄ່າຂອງຊ່ອງຂໍ້ມູນ, ຈາກນັ້ນ
ຄ່າພາກສະຫນາມຈະຖືກປ່ຽນເປັນ SQL ໂດຍອັດຕະໂນມັດ NULL ມູນຄ່າ.
· trim ທັງສອງ ຍະຫວ່າງ, trim ໄວ້ ຍະຫວ່າງ, trim ສິດ ຍະຫວ່າງ
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ຕັດຊ່ອງຂາວໃນຂໍ້ມູນທີ່ອ່ານ, ທັງສອງດ້ານຂອງ
ຂໍ້ມູນ, ຫຼືພຽງແຕ່ຕົວອັກສອນຍະຫວ່າງທີ່ພົບເຫັນຢູ່ເບື້ອງຊ້າຍຂອງການສະຕຣີພາບ, ຫຼືພຽງແຕ່
ທີ່ຢູ່ເບື້ອງຂວາຂອງສາຍ.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ CSV ໄຟລ໌, ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ a ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ກັບ PostgreSQL
ຕາຕະລາງເປົ້າຫມາຍກ່ອນທີ່ຈະອ່ານໄຟລ໌ຂໍ້ມູນ.
· ວາງ ດັດສະນີ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, ບັນຫາ pgloader ຢຸດ INDEX ຄໍາສັ່ງຕໍ່ຕ້ານທັງຫມົດ
ດັດສະນີທີ່ກໍານົດໄວ້ໃນຕາຕະລາງເປົ້າຫມາຍກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນ ສ້າງ INDEX
ຄໍາສັ່ງຄັ້ງດຽວ COPY ແມ່ນແລ້ວ.
ເພື່ອໃຫ້ໄດ້ຮັບການປະຕິບັດທີ່ດີທີ່ສຸດທີ່ເປັນໄປໄດ້, ດັດສະນີທັງຫມົດຖືກສ້າງຂື້ນໃນ
ຂະຫນານແລະໃນເວລາທີ່ເຮັດໄດ້ກະແຈຕົ້ນຕໍໄດ້ຖືກສ້າງຂຶ້ນອີກເທື່ອຫນຶ່ງຈາກດັດຊະນີທີ່ເປັນເອກະລັກພຽງແຕ່
ສ້າງ. ຂະບວນການສອງຂັ້ນຕອນນີ້ອະນຸຍາດໃຫ້ສ້າງດັດສະນີຫຼັກຕົ້ນຕໍໃນຂະຫນານກັບ
ດັດຊະນີອື່ນໆ, ມີພຽງແຕ່ ອີກຕໍ່ໄປ ຕາຕະລາງ ຄໍາສັ່ງຕ້ອງການ ການເຂົ້າເຖິງ exclusive ລັອກ on
ຕາຕະລາງເປົ້າຫມາຍ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ຂ້າມ header
ເອົາຄ່າຕົວເລກເປັນ argument. ແນະນຳ pgloader ໃຫ້ຂ້າມເສັ້ນຫຼາຍເສັ້ນນັ້ນຢູ່ທີ່
ການເລີ່ມຕົ້ນຂອງໄຟລ໌ປ້ອນຂໍ້ມູນ.
· csv header
ໃຊ້ແຖວທໍາອິດທີ່ອ່ານຫຼັງຈາກນັ້ນ ຂ້າມ header ເປັນບັນຊີລາຍຊື່ຂອງ csv ຊື່ພາກສະຫນາມທີ່ຈະພົບເຫັນ
ໃນໄຟລ໌ CSV, ໂດຍໃຊ້ຕົວກໍານົດການ CSV ດຽວກັນກັບຂໍ້ມູນ CSV.
· trim ບໍ່ໄດ້ອ້າງອີງ ເປົ່າຫວ່າງ
ເມື່ອອ່ານຄ່າ unquoted ໃນ CSV ໄຟລ໌, ເອົາຊ່ອງຫວ່າງທີ່ພົບເຫັນຢູ່ໃນລະຫວ່າງ
ຕົວແຍກແລະມູນຄ່າ. ພຶດຕິກຳນັ້ນເປັນຄ່າເລີ່ມຕົ້ນ.
· ຮັກສາ ບໍ່ໄດ້ອ້າງອີງ ເປົ່າຫວ່າງ
ເມື່ອອ່ານຄ່າ unquoted ໃນ CSV ໄຟລ໌, ຮັກສາຊ່ອງຫວ່າງທີ່ພົບເຫັນຢູ່ໃນລະຫວ່າງ
ຕົວແຍກແລະມູນຄ່າ.
· ທົ່ງນາ ຕົວເລືອກ ລ້ອມຮອບ by
ເອົາຕົວອັກສອນດຽວເປັນການໂຕ້ຖຽງ, ເຊິ່ງຈະຕ້ອງພົບຢູ່ໃນວົງຢືມດຽວ, ແລະ
ອາດຈະຖືກມອບໃຫ້ເປັນຕົວອັກສອນທີ່ສາມາດພິມໄດ້ເອງ, ຄ່າພິເສດ \t ເພື່ອໝາຍເຖິງ a
ລັກສະນະຕາຕະລາງ, ຫຼື 0x ຫຼັງຈາກນັ້ນ, ຄ່າເລກຖານສິບຫົກທີ່ອ່ານເປັນລະຫັດ ASCII ສໍາລັບ
ລັກສະນະ.
ຕົວອັກສອນນີ້ຖືກໃຊ້ເປັນຕົວອັກສອນອ້າງອີງໃນ CSV ໄຟລ໌, ແລະເລີ່ມຕົ້ນເປັນ
double-quote.
· ທົ່ງນາ ບໍ່ ລ້ອມຮອບ
ໂດຍຄ່າເລີ່ມຕົ້ນ, pgloader ຈະໃຊ້ຕົວອັກສອນສອງເທົ່າເປັນຕົວອັກສອນປິດ.
ຖ້າທ່ານມີໄຟລ໌ CSV ທີ່ຊ່ອງຂໍ້ມູນບໍ່ໄດ້ຖືກປິດລ້ອມແລະກໍາລັງໃຊ້ double-quote ເປັນ
ຄາດວ່າຈະມີລັກສະນະທໍາມະດາ, ຫຼັງຈາກນັ້ນນໍາໃຊ້ທາງເລືອກ ທົ່ງນາ ບໍ່ ລ້ອມຮອບ ສໍາລັບ CSV
parser ເພື່ອຍອມຮັບຄ່າເຫຼົ່ານັ້ນ.
· ທົ່ງນາ ເອົາຕົວຫຼົບ ໜີ by
ເອົາຄ່າພິເສດ backslash-quote or double-quote, ຫຼືມູນຄ່າໃດໆທີ່ສະຫນັບສະຫນູນ
ໂດຍ ທົ່ງນາ ສິ້ນສຸດລົງ by ທາງເລືອກ (ເບິ່ງຂ້າງລຸ່ມນີ້). ຄ່ານີ້ຖືກໃຊ້ເພື່ອຮັບຮູ້
ຕົວແຍກພາກສະຫນາມທີ່ຫລົບຫນີເມື່ອພວກເຂົາຈະຖືກພົບເຫັນຢູ່ໃນຊ່ອງຂໍ້ມູນດ້ວຍຕົນເອງ.
ຄ່າເລີ່ມຕົ້ນເປັນ double-quote.
· csv escape ຮູບແບບການ
ເອົາຄ່າພິເສດ quote (ຄ່າເລີ່ມຕົ້ນ) ຫຼື ດັ່ງຕໍ່ໄປນີ້ ແລະອະນຸຍາດໃຫ້ CSV
parser ເພື່ອວິເຄາະພຽງແຕ່ຕົວແຍກພາກສະຫນາມທີ່ຫນີອອກຫຼືຕົວອັກສອນໃດໆ (ລວມທັງ CSV
data) ເມື່ອນຳໃຊ້ ດັ່ງຕໍ່ໄປນີ້ ມູນຄ່າ.
· ທົ່ງນາ ສິ້ນສຸດລົງ by
ເອົາຕົວອັກສອນດຽວເປັນການໂຕ້ຖຽງ, ເຊິ່ງຈະຕ້ອງພົບຢູ່ໃນວົງຢືມດຽວ, ແລະ
ອາດຈະຖືກມອບໃຫ້ເປັນຕົວອັກສອນທີ່ສາມາດພິມໄດ້ເອງ, ຄ່າພິເສດ \t ເພື່ອໝາຍເຖິງ a
ລັກສະນະຕາຕະລາງ, ຫຼື 0x ຫຼັງຈາກນັ້ນ, ຄ່າເລກຖານສິບຫົກທີ່ອ່ານເປັນລະຫັດ ASCII ສໍາລັບ
ລັກສະນະ.
ລັກສະນະນີ້ຖືກນໍາໃຊ້ເປັນ ພາກສະຫນາມ separator ໃນເວລາອ່ານ CSV ຂໍ້ມູນ.
· ສາຍ ສິ້ນສຸດລົງ by
ເອົາຕົວອັກສອນດຽວເປັນການໂຕ້ຖຽງ, ເຊິ່ງຈະຕ້ອງພົບຢູ່ໃນວົງຢືມດຽວ, ແລະ
ອາດຈະຖືກມອບໃຫ້ເປັນຕົວອັກສອນທີ່ສາມາດພິມໄດ້ເອງ, ຄ່າພິເສດ \t ເພື່ອໝາຍເຖິງ a
ລັກສະນະຕາຕະລາງ, ຫຼື 0x ຫຼັງຈາກນັ້ນ, ຄ່າເລກຖານສິບຫົກທີ່ອ່ານເປັນລະຫັດ ASCII ສໍາລັບ
ລັກສະນະ.
ລັກສະນະນີ້ຖືກນໍາໃຊ້ເພື່ອຮັບຮູ້ ປາຍສາຍ ເງື່ອນໄຂໃນເວລາທີ່ອ່ານ CSV ຂໍ້ມູນ.
ນ້ໍາຫນັກ FIXED ຄໍລາສ
ຄໍາສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫຼດຂໍ້ມູນຈາກໄຟລ໌ຂໍ້ຄວາມທີ່ມີຖັນຈັດລຽງ
ຢູ່ໃນ ຄົງ ຂະຫນາດ ລັກສະນະ. ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫຼດແກ້ໄຂ
ຈາກໃນແຖວ
(
a ຈາກ 0 ສໍາລັບ 10,
b ຈາກ 10 ສໍາລັບ 8,
c ຈາກ 18 ສໍາລັບ 8,
d ຈາກ 26 ສໍາລັບ 17 [null ຖ້າຫວ່າງເປົ່າ, ຕັດຊ່ອງຫວ່າງທາງຂວາ]
)
ເຂົ້າໄປໃນ postgresql:///pgloader?fixed
(
a, b,
c ໃຊ້ເວລາ (time-with-no-separator c),
d
)
ດ້ວຍການຫຍໍ້
SET client_encoding ເປັນ 'latin1',
work_mem ເປັນ '14MB',
standard_conforming_strings ກັບ 'on'
ກ່ອນການໂຫຼດເຮັດ
ຕາຕະລາງຫຼຸດລົງ $$ ຖ້າມີການສ້ອມແຊມ; $$,
$$ ສ້າງຕາຕະລາງຄົງທີ່ (
ຈຳນວນເຕັມ,
b ວັນທີ,
c ເວລາ,
d ຂໍ້ຄວາມ
);
$$;
01234567892008052011431250 ເບີທຳອິດ
01234562008052115182300 ຊ້າຍເດີມ ເອກະສານຄົບ
12345678902008052208231560ອີກສາຍ
2345609872014092914371500
2345678902014092914371520
ໄດ້ ຄົງ ຄໍາສັ່ງຮູບແບບຍອມຮັບຂໍ້ຕໍ່ໄປນີ້ແລະທາງເລືອກ:
· ຈາກ
ຊື່ໄຟລ໌ທີ່ຈະໂຫລດຂໍ້ມູນຈາກ. ຍອມຮັບ ກຳລັງເຂົ້າລະຫັດ ທາງເລືອກ. ໃຊ້
--list-encodes ທາງເລືອກທີ່ຈະຮູ້ວ່າຊື່ການເຂົ້າລະຫັດໃດໄດ້ຮັບການສະຫນັບສະຫນູນ.
ຊື່ໄຟລ໌ອາດຈະຖືກຫຸ້ມດ້ວຍວົງຢືມດຽວ, ແລະສາມາດເປັນຫນຶ່ງໃນຕໍ່ໄປນີ້
ຄຸນຄ່າພິເສດ:
· inline
ຂໍ້ມູນຖືກພົບເຫັນຫຼັງຈາກສິ້ນສຸດຂອງຄໍາສັ່ງທີ່ແຍກວິເຄາະ. ຈໍານວນເສັ້ນຫວ່າງໃດໆ
ລະຫວ່າງການສິ້ນສຸດຂອງຄໍາສັ່ງແລະການເລີ່ມຕົ້ນຂອງຂໍ້ມູນຖືກຍອມຮັບ.
· stdin
ອ່ານຂໍ້ມູນຈາກກະແສການປ້ອນຂໍ້ມູນມາດຕະຖານ.
ໄດ້ ຈາກ ທາງເລືອກຍັງສະຫນັບສະຫນູນບັນຊີລາຍຊື່ທີ່ແຍກອອກເປັນເຄື່ອງຫມາຍຈຸດທາງເລືອກຂອງ ພາກສະຫນາມ ຊື່ອະທິບາຍ
ສິ່ງທີ່ຄາດວ່າຈະຢູ່ໃນ FIXED ໄຟລ໌ຂໍ້ມູນ.
ຊື່ແຕ່ລະພາກສະຫນາມແມ່ນປະກອບດ້ວຍຊື່ພາກສະຫນາມຕາມດ້ວຍຕົວເລືອກຜູ້ອ່ານສະເພາະສໍາລັບ
ພາກສະຫນາມນັ້ນ. ທາງເລືອກຂອງຜູ້ອ່ານຕໍ່ພາກສະຫນາມສະຫນັບສະຫນູນແມ່ນດັ່ງຕໍ່ໄປນີ້, ບ່ອນທີ່ພຽງແຕ່ ການເລີ່ມຕົ້ນ ແລະ
ຄວາມຍາວ ແມ່ນຕ້ອງການ.
· ການເລີ່ມຕົ້ນ
ວາງຕຳແໜ່ງໃນແຖວບ່ອນທີ່ຈະເລີ່ມອ່ານຄ່າຂອງຊ່ອງຂໍ້ມູນນັ້ນ. ສາມາດເຂົ້າກັບ
ຕົວເລກທົດສະນິຍົມ ຫຼື 0x ຈາກນັ້ນເລກຖານສິບຫົກ.
· ຄວາມຍາວ
ວິທີການຈໍານວນຫຼາຍ bytes ອ່ານຈາກ ການເລີ່ມຕົ້ນ ຕຳແໜ່ງເພື່ອອ່ານຄ່າຂອງຊ່ອງຂໍ້ມູນນັ້ນ. ຮູບແບບດຽວກັນ
as ການເລີ່ມຕົ້ນ.
ພາລາມິເຕີທາງເລືອກເຫຼົ່ານັ້ນຕ້ອງຖືກຕິດຢູ່ໃນວົງເລັບສີ່ຫຼ່ຽມ ແລະຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ:
· ສິ້ນສຸດລົງ by
ເບິ່ງລາຍລະອຽດຂອງ ພາກສະຫນາມ ສິ້ນສຸດລົງ by ຂ້າງລຸ່ມນີ້.
ການປຸງແຕ່ງທາງເລືອກນີ້ບໍ່ໄດ້ປະຕິບັດໃນປັດຈຸບັນ.
· ວັນ ຮູບແບບ
ໃນເວລາທີ່ພາກສະຫນາມຄາດວ່າຈະເປັນປະເພດວັນທີ, ຫຼັງຈາກນັ້ນທາງເລືອກນີ້ອະນຸຍາດໃຫ້ກໍານົດການ
ຮູບແບບວັນທີທີ່ໃຊ້ໃນໄຟລ໌.
ສະຕຣິງຮູບແບບວັນທີແມ່ນສະຕຣິງແມ່ແບບທີ່ສ້າງແບບຈໍາລອງກັບ PostgreSQL to_char
ສະຫນັບສະຫນູນສະຕຣິງແມ່ແບບ, ຈໍາກັດຮູບແບບດັ່ງຕໍ່ໄປນີ້:
· YYYY, YYY, YY ສໍາລັບພາກສ່ວນປີ
· MM ສໍາລັບພາກສ່ວນເດືອນຕົວເລກ
· DD ສໍາລັບພາກສ່ວນມື້ຕົວເລກ
· HH, HH12, HH24 ສໍາລັບພາກສ່ວນຊົ່ວໂມງ
· am, AM, am, AM
· ແລງ, ແລງ, ແລງ, ແລງ
· MI ສໍາລັບພາກສ່ວນນາທີ
· SS ສໍາລັບພາກສ່ວນວິນາທີ
· MS ສໍາລັບສ່ວນ milliseconds (4 ຕົວເລກ)
·ສະຫະລັດສໍາລັບ microseconds (6 ຕົວເລກ)
· ເຄື່ອງໝາຍວັກຕອນທີ່ບໍ່ໄດ້ວິເຄາະ: - . * # @ T / \ ແລະຊ່ອງ
ນີ້ແມ່ນຕົວຢ່າງຂອງ a ວັນ ຮູບແບບ ຂໍ້ມູນ:
ຊື່ຖັນ [ຮູບແບບວັນທີ 'YYYY-MM-DD HH24-MI-SS.US']
· null if
ຕົວເລືອກນີ້ໃຊ້ເວລາການໂຕ້ຖຽງເຊິ່ງເປັນຄໍາສໍາຄັນ ເປົ່າຫວ່າງ ຫຼືສອງວົງຢືມ
string
ເມື່ອໃດ ເປົ່າຫວ່າງ ຖືກນໍາໃຊ້ແລະຄ່າພາກສະຫນາມທີ່ຖືກອ່ານມີພຽງແຕ່ຕົວອັກສອນຍະຫວ່າງ,
ຫຼັງຈາກນັ້ນ, ມັນຈະຖືກປ່ຽນເປັນ SQL ໂດຍອັດຕະໂນມັດ NULL ມູນຄ່າ.
ເມື່ອສະຕຣິງທີ່ອ້າງອີງຄູ່ຖືກໃຊ້ ແລະສະຕຣິງນັ້ນຖືກອ່ານເປັນຄ່າຂອງຊ່ອງຂໍ້ມູນ, ຈາກນັ້ນ
ຄ່າພາກສະຫນາມຈະຖືກປ່ຽນເປັນ SQL ໂດຍອັດຕະໂນມັດ NULL ມູນຄ່າ.
· trim ທັງສອງ ຍະຫວ່າງ, trim ໄວ້ ຍະຫວ່າງ, trim ສິດ ຍະຫວ່າງ
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ຕັດຊ່ອງຂາວໃນຂໍ້ມູນທີ່ອ່ານ, ທັງສອງດ້ານຂອງ
ຂໍ້ມູນ, ຫຼືພຽງແຕ່ຕົວອັກສອນຍະຫວ່າງທີ່ພົບເຫັນຢູ່ເບື້ອງຊ້າຍຂອງການສະຕຣີພາບ, ຫຼືພຽງແຕ່
ທີ່ຢູ່ເບື້ອງຂວາຂອງສາຍ.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ FIXED ໄຟລ໌, ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ a ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ກັບ PostgreSQL
ຕາຕະລາງເປົ້າຫມາຍກ່ອນທີ່ຈະອ່ານໄຟລ໌ຂໍ້ມູນ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ຂ້າມ header
ເອົາຄ່າຕົວເລກເປັນ argument. ແນະນຳ pgloader ໃຫ້ຂ້າມເສັ້ນຫຼາຍເສັ້ນນັ້ນຢູ່ທີ່
ການເລີ່ມຕົ້ນຂອງໄຟລ໌ປ້ອນຂໍ້ມູນ.
ນ້ໍາຫນັກ COPY ຟໍແມັດ ເອກະສານ
ຄຳສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫລດຈາກໄຟລ໌ທີ່ມີຂໍ້ມູນ COPY TEXT ເປັນ
ອະທິບາຍໄວ້ໃນເອກະສານ PostgreSQL. ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫຼດສຳເນົາ
ຈາກ copy://./data/track.copy
(
trackid, ຕິດຕາມ, ອັນລະບັ້ມ, ສື່, ປະເພດ, ນັກປະພັນ,
milliseconds, bytes, unitprice
)
ເຂົ້າໄປໃນ postgresql:///pgloader?track_full
ດ້ວຍການຫຍໍ້
SET client_encoding ເປັນ 'latin1',
work_mem ເປັນ '14MB',
standard_conforming_strings ກັບ 'on'
ກ່ອນການໂຫຼດເຮັດ
$$ drop table ຖ້າມີ track_full; $$,
$$ ສ້າງຕາຕະລາງ track_full (
ຕິດຕາມ bigserial,
ຕິດຕາມຂໍ້ຄວາມ,
ຂໍ້ຄວາມອັນລະບັ້ມ,
ຂໍ້ຄວາມສື່ມວນຊົນ,
ປະເພດຂໍ້ຄວາມ,
ບົດຄວາມປະກອບ,
milliseconds ໃຫຍ່,
bytes ໃຫຍ່,
ຕົວເລກ unitprice
);
$$;
ໄດ້ COPY ຄໍາສັ່ງຮູບແບບຍອມຮັບຂໍ້ຕໍ່ໄປນີ້ແລະທາງເລືອກ:
· ຈາກ
ຊື່ໄຟລ໌ທີ່ຈະໂຫລດຂໍ້ມູນຈາກ. ນີ້ສະຫນັບສະຫນູນໄຟລ໌ທ້ອງຖິ່ນ, HTTP URLs ແລະ zip
ໄຟລ໌ທີ່ມີໄຟລ໌ dbf ດຽວທີ່ມີຊື່ດຽວກັນ. ເອົາໄຟລ໌ zip ດັ່ງກ່າວຈາກ an
ແນ່ນອນ, ທີ່ຢູ່ HTTP ແມ່ນສະຫນັບສະຫນູນ.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ COPY ໄຟລ໌, ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
· ຕົວຂັ້ນ
ເອົາຕົວອັກສອນດຽວເປັນການໂຕ້ຖຽງ, ເຊິ່ງຈະຕ້ອງພົບຢູ່ໃນວົງຢືມດຽວ, ແລະ
ອາດຈະຖືກມອບໃຫ້ເປັນຕົວອັກສອນທີ່ສາມາດພິມໄດ້ເອງ, ຄ່າພິເສດ \t ເພື່ອໝາຍເຖິງ a
ລັກສະນະຕາຕະລາງ, ຫຼື 0x ຫຼັງຈາກນັ້ນ, ຄ່າເລກຖານສິບຫົກທີ່ອ່ານເປັນລະຫັດ ASCII ສໍາລັບ
ລັກສະນະ.
ລັກສະນະນີ້ຖືກນໍາໃຊ້ເປັນ ຕົວຂັ້ນ ໃນເວລາທີ່ອ່ານຂໍ້ມູນ, ໃນລັກສະນະທີ່ຄ້າຍຄືກັນກັບ
PostgreSQL COPY ທາງເລືອກ.
· null
ເອົາສະຕຣິງທີ່ອ້າງອີງເປັນການໂຕ້ຖຽງ (ວົງຢືມສາມາດເປັນວົງຢືມຄູ່ ຫຼື ດ່ຽວ
quotes) ແລະໃຊ້ string ທີ່ເປັນ NULL ການເປັນຕົວແທນໃນຂໍ້ມູນ.
ນີ້ແມ່ນຄ້າຍຄືກັນກັບ null COPY ທາງເລືອກໃນ PostgreSQL.
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ a ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ກັບ PostgreSQL
ຕາຕະລາງເປົ້າຫມາຍກ່ອນທີ່ຈະອ່ານໄຟລ໌ຂໍ້ມູນ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ຂ້າມ header
ເອົາຄ່າຕົວເລກເປັນ argument. ແນະນຳ pgloader ໃຫ້ຂ້າມເສັ້ນຫຼາຍເສັ້ນນັ້ນຢູ່ທີ່
ການເລີ່ມຕົ້ນຂອງໄຟລ໌ປ້ອນຂໍ້ມູນ.
ນ້ໍາຫນັກ dbf
ຄໍາສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫລດຂໍ້ມູນຈາກ a dbf ໄຟລ໌. ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫລດ DBF
ຈາກ http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/reg2013.dbf
ເຂົ້າໄປໃນ postgresql://user@localhost/dbname
ດ້ວຍການຕັດ, ສ້າງຕາຕະລາງ;
ໄດ້ dbf ຄໍາສັ່ງຮູບແບບຍອມຮັບຂໍ້ຕໍ່ໄປນີ້ແລະທາງເລືອກ:
· ຈາກ
ຊື່ໄຟລ໌ທີ່ຈະໂຫລດຂໍ້ມູນຈາກ. ນີ້ສະຫນັບສະຫນູນໄຟລ໌ທ້ອງຖິ່ນ, HTTP URLs ແລະ zip
ໄຟລ໌ທີ່ມີໄຟລ໌ dbf ດຽວທີ່ມີຊື່ດຽວກັນ. ເອົາໄຟລ໌ zip ດັ່ງກ່າວຈາກ an
ແນ່ນອນ, ທີ່ຢູ່ HTTP ແມ່ນສະຫນັບສະຫນູນ.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ dbf ໄຟລ໌, ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ a ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ກັບ PostgreSQL
ຕາຕະລາງເປົ້າຫມາຍກ່ອນທີ່ຈະອ່ານໄຟລ໌ຂໍ້ມູນ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ສ້າງ ຕາຕະລາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ສ້າງຕາຕະລາງໂດຍໃຊ້ຂໍ້ມູນ meta ທີ່ພົບໃນ
ໄດ້ dbf ໄຟລ໌, ເຊິ່ງຕ້ອງມີບັນຊີລາຍຊື່ຂອງຊ່ອງຂໍ້ມູນທີ່ມີປະເພດຂໍ້ມູນຂອງເຂົາເຈົ້າ. ມາດຕະຖານ
ການປ່ຽນປະເພດຂໍ້ມູນຈາກ DBF ເປັນ PostgreSQL ແມ່ນແລ້ວ.
· ຕາຕະລາງ ຊື່
ທາງເລືອກນີ້ຄາດວ່າມູນຄ່າຂອງມັນອາດຈະເປັນຊື່ທີ່ມີຄຸນສົມບັດຂອງຕາຕະລາງທີ່ຈະສ້າງ.
ນ້ໍາຫນັກ IXF
ຄຳສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫຼດຂໍ້ມູນຈາກ IBM IXF ໄຟລ໌. ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫລດ IXF
ຈາກ data/nsitra.test1.ixf
ເຂົ້າໄປໃນ postgresql:///pgloader?nsitra.test1
ດ້ວຍການຕັດສັ້ນ, ສ້າງຕາຕະລາງ
ກ່ອນການໂຫຼດເຮັດ
$$ ສ້າງ schema ຖ້າບໍ່ມີ nsitra; $$,
$$ drop table ຖ້າມີ nsitra.test1; $$;
ໄດ້ ixf ຄໍາສັ່ງຮູບແບບຍອມຮັບຂໍ້ຕໍ່ໄປນີ້ແລະທາງເລືອກ:
· ຈາກ
ຊື່ໄຟລ໌ທີ່ຈະໂຫລດຂໍ້ມູນຈາກ. ນີ້ສະຫນັບສະຫນູນໄຟລ໌ທ້ອງຖິ່ນ, HTTP URLs ແລະ zip
ໄຟລ໌ທີ່ມີໄຟລ໌ ixf ດຽວທີ່ມີຊື່ດຽວກັນ. ເອົາໄຟລ໌ zip ດັ່ງກ່າວຈາກ an
ແນ່ນອນ, ທີ່ຢູ່ HTTP ແມ່ນສະຫນັບສະຫນູນ.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ IXF ໄຟລ໌, ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ a ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ກັບ PostgreSQL
ຕາຕະລາງເປົ້າຫມາຍກ່ອນທີ່ຈະອ່ານໄຟລ໌ຂໍ້ມູນ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ສ້າງ ຕາຕະລາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ສ້າງຕາຕະລາງໂດຍໃຊ້ຂໍ້ມູນ meta ທີ່ພົບໃນ
ໄດ້ dbf ໄຟລ໌, ເຊິ່ງຕ້ອງມີບັນຊີລາຍຊື່ຂອງຊ່ອງຂໍ້ມູນທີ່ມີປະເພດຂໍ້ມູນຂອງເຂົາເຈົ້າ. ມາດຕະຖານ
ການປ່ຽນປະເພດຂໍ້ມູນຈາກ DBF ເປັນ PostgreSQL ແມ່ນແລ້ວ.
· ຕາຕະລາງ ຊື່
ທາງເລືອກນີ້ຄາດວ່າມູນຄ່າຂອງມັນອາດຈະເປັນຊື່ທີ່ມີຄຸນສົມບັດຂອງຕາຕະລາງທີ່ຈະສ້າງ.
ນ້ໍາຫນັກ ARCHIVE
ຄຳສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫຼດຂໍ້ມູນຈາກໜຶ່ງ ຫຼືຫຼາຍກວ່າໜຶ່ງໄຟລ໌ທີ່ບັນຈຸຢູ່ໃນ
ຮວບຮວມ. ໃນປັດຈຸບັນຮູບແບບການເກັບຮັກສາສະຫນັບສະຫນູນພຽງແຕ່ແມ່ນ ໄປສະນີ, ແລະຮວບຮວມອາດຈະເປັນ
ດາວໂຫຼດຈາກ HTTP Url.
ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫລດ archive
ຈາກ /Users/dim/Downloads/GeoLiteCity-latest.zip
ເຂົ້າໄປໃນ postgresql:///ip4r
ກ່ອນການໂຫຼດ
ເຮັດ $$ ສ້າງ extension ຖ້າບໍ່ມີ ip4r; $$,
$$ ສ້າງ schema ຖ້າບໍ່ມີ geolite; $$,
ປະຕິບັດ 'geolite.sql'
ໂຫລດ CSV
ຈາກ FILENAME Matching ~/GeoLiteCity-Location.csv/
ດ້ວຍການເຂົ້າລະຫັດ iso-8859-1
(
locId,
ປະເທດ,
ພາກພື້ນ null ຖ້າຫວ່າງເປົ່າ,
ນະຄອນ null ຖ້າຫວ່າງເປົ່າ,
ລະຫັດໄປສະນີ null ຖ້າຫວ່າງເປົ່າ,
ເສັ້ນຂະຫນານ,
ເສັ້ນແວງ,
metroCode null ຖ້າຫວ່າງເປົ່າ,
ລະຫັດພື້ນທີ່ null ຖ້າຫວ່າງເປົ່າ
)
ເຂົ້າໄປໃນ postgresql:///ip4r?geolite.location
(
ສະຖານທີ່, ປະເທດ, ພາກພື້ນ, ເມືອງ, ລະຫັດໄປສະນີ,
ຈຸດທີ່ຕັ້ງໂດຍການນໍາໃຊ້ (ຮູບແບບ nil "(~, ~ a)" ເສັ້ນແວງເສັ້ນແວງ,
metroCode,ລະຫັດພື້ນທີ່
)
ດ້ວຍຫົວຂໍ້ຂ້າມ = 2,
ຊ່ອງຂໍ້ມູນປິດລ້ອມເປັນທາງເລືອກໂດຍ ´"´,
ທົ່ງນາທີ່ຫລົບຫນີໂດຍການອ້າງອີງສອງເທົ່າ,
ຊ່ອງຂໍ້ມູນຖືກຢຸດໂດຍ ','
ແລະໂຫລດ CSV
ຈາກ FILENAME Matching ~/GeoLiteCity-Blocks.csv/
ດ້ວຍການເຂົ້າລະຫັດ iso-8859-1
(
startIpNum, endIpNum, locId
)
ເຂົ້າໄປໃນ postgresql:///ip4r?geolite.blocks
(
iprange ip4r ໂດຍໃຊ້ (ip-range startIpNum endIpNum),
locId
)
ດ້ວຍຫົວຂໍ້ຂ້າມ = 2,
ຊ່ອງຂໍ້ມູນປິດລ້ອມເປັນທາງເລືອກໂດຍ ´"´,
ທົ່ງນາທີ່ຫລົບຫນີໂດຍການອ້າງອີງສອງເທົ່າ,
ຊ່ອງຂໍ້ມູນຖືກຢຸດໂດຍ ','
ສຸດທ້າຍເຮັດ
$$ ສ້າງ index blocks_ip4r_idx ໃນ geolite.blocks ໂດຍໃຊ້ gist(iprange); $$;
ໄດ້ ເກັບ ຄໍາສັ່ງຍອມຮັບຂໍ້ແລະທາງເລືອກຕໍ່ໄປນີ້:
· ຈາກ
ຊື່ໄຟລ໌ ຫຼື HTTP URI ບ່ອນທີ່ຈະໂຫລດຂໍ້ມູນຈາກ. ເມື່ອໃຫ້ HTTP URL ທີ່ເຊື່ອມຕໍ່
ໄຟລ໌ຈະຖືກດາວໂຫຼດຢູ່ໃນເຄື່ອງກ່ອນການປະມວນຜົນ.
ຖ້າໄຟລ໌ແມ່ນ ກ ໄປສະນີ ໄຟລ໌, ຜົນປະໂຫຍດແຖວຄໍາສັ່ງ unzip ຖືກນໍາໃຊ້ເພື່ອຂະຫຍາຍ
ເກັບໄວ້ໃນໄຟລ໌ໃນ $TMPDIR, ຫຼື / tmp if $TMPDIR ບໍ່ໄດ້ຕັ້ງ ຫຼືຕັ້ງເປັນອັນທີ່ບໍ່ມີຢູ່ແລ້ວ
ລະບົບ.
ຫຼັງຈາກນັ້ນ, ຄໍາສັ່ງຕໍ່ໄປນີ້ແມ່ນໃຊ້ຈາກໄດເລກະທໍລີລະດັບເທິງທີ່ບ່ອນເກັບມ້ຽນ
ໄດ້ຮັບການຂະຫຍາຍ.
· ຄໍາສັ່ງ [ ແລະ ຄໍາສັ່ງ ... ]
ຊຸດຄຳສັ່ງຕໍ່ກັບເນື້ອໃນຂອງແຟ້ມຈັດເກັບ, ໃນເວລານີ້ເທົ່ານັ້ນ
CSV,'ແກ້ໄຂແລ້ວ ແລະ dbf ຄໍາສັ່ງແມ່ນສະຫນັບສະຫນູນ.
ໃຫ້ສັງເກດວ່າຄໍາສັ່ງແມ່ນສະຫນັບສະຫນູນຂໍ້ກໍານົດ ຈາກ ຊື່ເອກະສານ ການສົນທະນາ ເຊິ່ງອະນຸຍາດໃຫ້
pgloader ຄໍາສັ່ງບໍ່ໃຫ້ຂຶ້ນກັບຊື່ທີ່ແນ່ນອນຂອງໄດເລກະທໍລີ archive.
ປະໂຫຍກດຽວກັນຍັງສາມາດຖືກນໍາໄປໃຊ້ກັບຫຼາຍໆໄຟລ໌ໂດຍໃຊ້ການສະກົດຄໍາ ຈາກ ທັງຫມົດ
FILENAMES ການສົນທະນາ ແລະການສະແດງອອກເປັນປົກກະຕິ.
ທັງຫມົດ ການຈັບຄູ່ clause ຕ້ອງປະຕິບັດຕາມກົດລະບຽບດັ່ງຕໍ່ໄປນີ້:
ຈາກ [ ALL FILENAMES | [ FIRST ] FILENAME ] ການຈັບຄູ່
· ສຸດທ້າຍ DO
SQL Queries ເພື່ອດໍາເນີນການເມື່ອຂໍ້ມູນຖືກໂຫລດ, ເຊັ່ນ: ສ້າງ INDEX.
ນ້ໍາຫນັກ MySQL DATABASE
ຄໍາສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫຼດຂໍ້ມູນຈາກການເຊື່ອມຕໍ່ຖານຂໍ້ມູນ. ເທົ່ານັ້ນ
ແຫຼ່ງຖານຂໍ້ມູນທີ່ຮອງຮັບແມ່ນປະຈຸບັນ MySQL, ແລະ pgloader ສະຫນັບສະຫນູນການແປງແບບໄດນາມິກ
schema ຂອງຖານຂໍ້ມູນແຫຼ່ງແລະການສ້າງດັດສະນີ.
ຊຸດມາດຕະຖານການຄາສທ໌ແມ່ນໃຫ້ມາ ແລະອາດຈະຖືກບັນຈຸເກີນ ແລະຖືກຕື່ມໃສ່ໂດຍ
ຄໍາສັ່ງ.
ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫຼດຖານຂໍ້ມູນ
ຈາກ mysql:// root@localhost/sakila
INTO postgresql://localhost:54393/sakila
ດ້ວຍການປະກອບມີການຫຼຸດລົງ, ສ້າງຕາຕະລາງ, ສ້າງດັດຊະນີ, ປັບລໍາດັບ
SET maintenance_work_mem ເປັນ '128MB',
work_mem ເປັນ '12MB',
search_path ກັບ 'sakila'
CAST type datetime ກັບ timestamptz drop default drop ບໍ່ແມ່ນ null ໂດຍໃຊ້ zero-dates-to-null,
ພິມວັນທີ drop ບໍ່ແມ່ນ null drop ເລີ່ມຕົ້ນໂດຍໃຊ້ zero-dates-to-null,
-- ພິມ tinyint ກັບ boolean ໂດຍໃຊ້ tinyint-to-boolean,
ພິມປີໄປຫາຈໍານວນເຕັມ
MATERIALIZE VIEWS film_list, staff_list
-- ລວມທັງການຈັບຄູ່ຊື່ຕາຕະລາງເທົ່ານັ້ນ ~/ຮູບເງົາ/, 'ນັກສະແດງ'
-- ບໍ່ລວມເອົາຊື່ຕາຕະລາງທີ່ກົງກັນ ~
-- ການຖອດລະຫັດຊື່ຕາຕະລາງທີ່ກົງກັນ ~/messed/, ~/ການເຂົ້າລະຫັດ/ ເປັນ utf8
ກ່ອນການໂຫຼດເຮັດ
$$ ສ້າງ schema ຖ້າບໍ່ມີ sakila; $$;
ໄດ້ ຖານຂໍ້ມູນ ຄໍາສັ່ງຍອມຮັບຂໍ້ແລະທາງເລືອກຕໍ່ໄປນີ້:
· ຈາກ
ຕ້ອງເປັນ URL ເຊື່ອມຕໍ່ທີ່ຊີ້ໄປຫາຖານຂໍ້ມູນ MySQL. ໃນປັດຈຸບັນມີພຽງແຕ່ MySQL ເທົ່ານັ້ນ
ສະຫນັບສະຫນູນເປັນແຫຼ່ງ pgloader.
ຖ້າການເຊື່ອມຕໍ່ URI ມີຊື່ຕາຕະລາງ, ຫຼັງຈາກນັ້ນພຽງແຕ່ຕາຕະລາງນີ້ຖືກຍ້າຍຈາກ
MySQL ກັບ PostgreSQL.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ MySQL ຖານຂໍ້ມູນ, ທາງເລືອກຕໍ່ໄປນີ້ໄດ້ຮັບການສະຫນັບສະຫນູນ, ແລະ
ຄວາມຜິດພາດ ກັບ ຂໍ້ແມ່ນ: no ລຳ ຕົ້ນ, ສ້າງ ຕາຕະລາງ, ປະກອບດ້ວຍ ວາງ, ສ້າງ ດັດສະນີ, reset
ລໍາດັບ, ຕ່າງປະເທດ ໃຊ້, ຕົວນ້ອຍ ຕົວລະບຸຕົວຕົນ.
ກັບ ຕົວເລືອກ:
· ປະກອບດ້ວຍ ວາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຫຼຸດລົງຕາຕະລາງທັງຫມົດໃນ PostgreSQL ເປົ້າຫມາຍ
ຖານຂໍ້ມູນທີ່ມີຊື່ປາກົດຢູ່ໃນຖານຂໍ້ມູນ SQLite. ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ນໍາໃຊ້
ຄໍາສັ່ງດຽວກັນຫຼາຍຄັ້ງຕິດຕໍ່ກັນຈົນກ່ວາທ່ານຄິດອອກທາງເລືອກທັງຫມົດ, ເລີ່ມຕົ້ນ
ອັດຕະໂນມັດຈາກສະພາບແວດລ້ອມທີ່ສະອາດ. ກະລຸນາສັງເກດວ່າ CASCADE ຖືກນໍາໃຊ້ເພື່ອຮັບປະກັນ
ຕາຕະລາງນັ້ນຖືກລຸດລົງເຖິງແມ່ນວ່າຈະມີກະແຈຕ່າງປະເທດຊີ້ໄປຫາພວກມັນ. ນີ້ແມ່ນ
ຊັດເຈນວ່າແມ່ນຫຍັງ ປະກອບດ້ວຍ ວາງ ມີຈຸດປະສົງເພື່ອເຮັດ: ຖິ້ມຕາຕະລາງເປົ້າຫມາຍທັງຫມົດແລະສ້າງໃຫມ່
ໃຫ້ເຂົາເຈົ້າ.
ການນໍາໃຊ້ທີ່ຍິ່ງໃຫຍ່ຈໍາເປັນຕ້ອງໄດ້ຮັບການດູແລ ປະກອບດ້ວຍ ວາງ, ຍ້ອນວ່າມັນຈະ cascade ກັບ ທັງຫມົດ
ວັດຖຸອ້າງອີງຕາຕະລາງເປົ້າຫມາຍ, ອາດຈະລວມທັງຕາຕະລາງອື່ນໆທີ່ບໍ່ແມ່ນ
ຖືກໂຫລດຈາກແຫຼ່ງ DB.
· ປະກອບດ້ວຍ no ວາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຈະບໍ່ປະກອບມີໃດໆ ຢຸດ ຖະແຫຼງການໃນເວລາໂຫຼດ
ຂໍ້ມູນ.
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ແຕ່ລະຄົນ
ຕາຕະລາງ PostgreSQL ກ່ອນການໂຫຼດຂໍ້ມູນໃສ່ມັນ.
· no ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ມີບັນຫາທີ່ບໍ່ມີ ພະຍາຍາມ ຄໍາສັ່ງ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ສ້າງ ຕາຕະລາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ສ້າງຕາຕະລາງໂດຍໃຊ້ຂໍ້ມູນ meta ທີ່ພົບໃນ
ໄດ້ MySQL ໄຟລ໌, ເຊິ່ງຕ້ອງມີບັນຊີລາຍຊື່ຂອງຊ່ອງຂໍ້ມູນທີ່ມີປະເພດຂໍ້ມູນຂອງເຂົາເຈົ້າ. ມາດຕະຖານ
ການປ່ຽນປະເພດຂໍ້ມູນຈາກ DBF ເປັນ PostgreSQL ແມ່ນແລ້ວ.
· ສ້າງ no ຕາຕະລາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຂ້າມການສ້າງຕາຕະລາງກ່ອນທີ່ຈະວາງຂໍ້ມູນ,
ຕາຕະລາງເປົ້າຫມາຍຕ້ອງມີຢູ່ແລ້ວ.
· ສ້າງ ດັດສະນີ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ໄດ້ຮັບຄໍານິຍາມຂອງດັດສະນີທັງຫມົດທີ່ພົບເຫັນຢູ່ໃນ
ຖານຂໍ້ມູນ MySQL ແລະສ້າງຊຸດດຽວກັນຂອງຄໍານິຍາມດັດສະນີຕໍ່ກັບ PostgreSQL
ຖານຂໍ້ມູນ.
· ສ້າງ no ດັດສະນີ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຈະຂ້າມການສ້າງດັດສະນີ.
· ເປັນເອກະລັກ ດັດຊະນີ ຊື່, ຮັກສາ ດັດຊະນີ ຊື່
ຊື່ດັດສະນີ MySQL ແມ່ນເປັນເອກະລັກຕໍ່ຕາຕະລາງ, ໃນຂະນະທີ່ຊື່ດັດສະນີ PostgreSQL ຕ້ອງມີ
ເປັນເອກະລັກຕໍ່ schema. ຄ່າເລີ່ມຕົ້ນສໍາລັບ pgloader ແມ່ນການປ່ຽນຊື່ດັດສະນີໂດຍການໃສ່ຄໍານໍາຫນ້າ
ມັນກັບ idx_OID ບ່ອນທີ່ OID ແມ່ນຕົວລະບຸຕົວເລກພາຍໃນຂອງຕາຕະລາງທີ່ດັດຊະນີແມ່ນ
ສ້າງຕໍ່ຕ້ານ.
ໃນບາງກໍລະນີເຊັ່ນເມື່ອ DDL ຖືກປະໄວ້ທັງຫມົດໃນກອບມັນອາດຈະເປັນເລື່ອງທີ່ສົມເຫດສົມຜົນ
ສໍາລັບ pgloader ທີ່ຈະລະເວັ້ນຈາກການຈັດການດັດສະນີຊື່ເປັນເອກະລັກ, ບັນລຸໄດ້ໂດຍການນໍາໃຊ້
ໄດ້ ຮັກສາ ດັດຊະນີ ຊື່ ທາງເລືອກ.
ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອ ເປັນເອກະລັກ ດັດຊະນີ ຊື່.
ເຖິງແມ່ນວ່າໃນເວລາທີ່ການນໍາໃຊ້ທາງເລືອກ ຮັກສາ ດັດຊະນີ ຊື່, ດັດສະນີຫຼັກຕົ້ນຕໍ MySQL ຊື່
"ປະຖົມ" ຈະໄດ້ຮັບຊື່ຂອງເຂົາເຈົ້າເປັນເອກະລັກ. ການບໍ່ເຮັດແນວນັ້ນຈະປ້ອງກັນການປະຖົມ
ປຸ່ມທີ່ຈະສ້າງອີກເທື່ອຫນຶ່ງໃນ PostgreSQL ບ່ອນທີ່ຊື່ດັດສະນີຕ້ອງເປັນເອກະລັກຕໍ່
ແຜນຜັງ.
· ຕ່າງປະເທດ ໃຊ້
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ໄດ້ຮັບຄໍານິຍາມຂອງກະແຈຕ່າງປະເທດທັງໝົດ
ພົບເຫັນຢູ່ໃນຖານຂໍ້ມູນ MySQL ແລະສ້າງຊຸດດຽວກັນຂອງຄໍານິຍາມທີ່ສໍາຄັນຕ່າງປະເທດຕໍ່ກັບ
ຖານຂໍ້ມູນ PostgreSQL.
· no ຕ່າງປະເທດ ໃຊ້
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຂ້າມການສ້າງກະແຈຕ່າງປະເທດ.
· reset ລໍາດັບ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, ໃນຕອນທ້າຍຂອງການໂຫຼດຂໍ້ມູນແລະຫຼັງຈາກດັດສະນີມີ
ທັງຫມົດໄດ້ຖືກສ້າງຂື້ນ, pgloader ປັບລໍາດັບ PostgreSQL ທັງຫມົດທີ່ສ້າງເປັນປະຈຸບັນ
ຄ່າສູງສຸດຂອງຖັນທີ່ເຂົາເຈົ້າຕິດຢູ່.
ທາງເລືອກ ໂຄງ ພຽງແຕ່ ແລະ ຂໍ້ມູນ ພຽງແຕ່ ບໍ່ມີຜົນຕໍ່ທາງເລືອກນີ້.
· reset no ລໍາດັບ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຂ້າມການຕັ້ງລໍາດັບໃຫມ່ຫຼັງຈາກການໂຫຼດ.
ທາງເລືອກ ໂຄງ ພຽງແຕ່ ແລະ ຂໍ້ມູນ ພຽງແຕ່ ບໍ່ມີຜົນຕໍ່ທາງເລືອກນີ້.
· ຕົວນ້ອຍ ຕົວລະບຸຕົວຕົນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ປ່ຽນຕົວລະບຸ MySQL ທັງຫມົດ (ຊື່ຕາຕະລາງ,
ຊື່ດັດສະນີ, ຊື່ຖັນ) ເຖິງ ຕົວນ້ອຍ, ຍົກເວັ້ນສໍາລັບ PostgreSQL ສະຫງວນໄວ້ ຄໍາສໍາຄັນ.
PostgreSQL ສະຫງວນໄວ້ ຄໍາສໍາຄັນແມ່ນຖືກກໍານົດໂດຍການເຄື່ອນໄຫວໂດຍການນໍາໃຊ້ລະບົບ
ຫນ້າທີ່ pg_get_keywords().
· quote ຕົວລະບຸຕົວຕົນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອ້າງເຖິງຕົວລະບຸ MySQL ທັງຫມົດເພື່ອໃຫ້ກໍລະນີຂອງພວກເຂົາ
ເປັນທີ່ເຄົາລົບ. ໃຫ້ສັງເກດວ່າຫຼັງຈາກນັ້ນທ່ານຈະຕ້ອງເຮັດສິ່ງດຽວກັນໃນຄໍາຮ້ອງສະຫມັກຂອງທ່ານ
ການສອບຖາມລະຫັດ.
· ໂຄງ ພຽງແຕ່
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້ pgloader ຫຼີກລ່ຽງການຍ້າຍຂໍ້ມູນ. ໃຫ້ສັງເກດວ່າ
schema ໃນສະພາບການນີ້ປະກອບມີດັດຊະນີໃນເວລາທີ່ທາງເລືອກ ສ້າງ ດັດສະນີ ມີ
ຖືກລະບຸໄວ້.
· ຂໍ້ມູນ ພຽງແຕ່
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້ pgloader ພຽງແຕ່ບັນຫາ COPY ຖະແຫຼງການ, ໂດຍບໍ່ມີການດໍາເນີນການໃດໆ
ການປຸງແຕ່ງອື່ນໆ.
· ສົ່ງສັນຍານ
ຂໍ້ກໍານົດການສົ່ງສັນຍານອະນຸຍາດໃຫ້ກໍານົດກົດລະບຽບການສົ່ງສັນຍານແບບກໍານົດເອງ, ບໍ່ວ່າຈະເປັນການໂຫຼດເກີນຄ່າເລີ່ມຕົ້ນ
ກົດລະບຽບການຄັດເລືອກຫຼືການປັບປຸງໃຫ້ເຂົາເຈົ້າມີກໍລະນີພິເສດ.
ຄາດວ່າກົດລະບຽບການຄັດເລືອກຈະປະຕິບັດຕາມຫນຶ່ງໃນຮູບແບບ:
ປະເພດ [ ... ] ເຖິງ [ ... ]
ຖັນ . [ ] ເຖິງ ...
ມັນເປັນໄປໄດ້ສໍາລັບ a casting ກົດລະບຽບ ເພື່ອຈັບຄູ່ກັບປະເພດຂໍ້ມູນ MySQL ຫຼືຕໍ່ກັບ a
ໄດ້ຮັບ ຖັນ ຊື່ ໃນໃຫ້ ຕາຕະລາງ ຊື່. ຄວາມຍືດຫຍຸ່ນນັ້ນອະນຸຍາດໃຫ້ຮັບມືກັບກໍລະນີທີ່
ປະເພດ ນ້ອຍ tiny ອາດຈະຖືກນໍາໃຊ້ເປັນ ປຸ້ຍ ໃນບາງກໍລະນີແຕ່ເປັນ ຂະຫນາດນ້ອຍ in
ອື່ນໆ.
ໄດ້ casting ກົດລະບຽບ ຖືກນໍາໃຊ້ໃນຄໍາສັ່ງ, ການແຂ່ງຂັນຄັ້ງທໍາອິດປ້ອງກັນບໍ່ໃຫ້ກົດລະບຽບດັ່ງຕໍ່ໄປນີ້
ຖືກ ນຳ ໃຊ້, ແລະກົດລະບຽບທີ່ຜູ້ໃຊ້ ກຳ ນົດແມ່ນຖືກປະເມີນກ່ອນ.
ກອງທີ່ສະຫນັບສະຫນູນແມ່ນ:
· ໃນເວລາທີ່ Default 'ຄ່າ'
ກົດລະບຽບການສົ່ງສັນຍານແມ່ນໃຊ້ກັບຖັນ MySQL ຂອງປະເພດແຫຼ່ງທີ່ມີເທົ່ານັ້ນ
ໄດ້ຮັບ ມູນຄ່າ, ເຊິ່ງຕ້ອງເປັນສະຕຣິງທີ່ຍົກມາອັນດຽວ ຫຼືສອງອັນ.
· ໃນເວລາທີ່ typemod ການສະແດງອອກ
ກົດລະບຽບການສົ່ງສັນຍານແມ່ນໃຊ້ກັບຖັນ MySQL ຂອງປະເພດແຫຼ່ງທີ່ມີ a
typemod ຄ່າທີ່ກົງກັບທີ່ໃຫ້ typemod ການສະແດງອອກ. ໄດ້ typemod ຖືກແຍກອອກເປັນຂອງມັນ
ຄວາມຖືກຕ້ອງ ແລະ ຂະຫນາດ ສ່ວນປະກອບ
ຕົວຢ່າງຂອງກົດລະບຽບການໂຍນໂດຍໃຊ້ a typemod ກອງ:
type char when (= precision 1) to char keep typemod
ການສະແດງອອກນີ້ໂຍນ MySQL char(1) ຖັນໃສ່ຖັນ PostgreSQL ຂອງປະເພດ char(1) ໃນຂະນະທີ່
ອະນຸຍາດໃຫ້ສໍາລັບກໍລະນີທົ່ວໄປ char(N) ຈະຖືກປ່ຽນໂດຍກົດລະບຽບການຄາສທເລີ່ມຕົ້ນເປັນ a
ປະເພດ PostgreSQL varchar(N).
· ກັບ ພິເສດ auto_increment
ກົດລະບຽບການສົ່ງສັນຍານພຽງແຕ່ຖືກນໍາໃຊ້ຕໍ່ກັບຖັນ MySQL ທີ່ມີ ພິເສດ ຖັນ
auto_increment ທາງເລືອກທີ່ກໍານົດໄວ້, ດັ່ງນັ້ນມັນເປັນໄປໄດ້ທີ່ຈະເປົ້າຫມາຍ eg serial ແທນທີ່ຈະ
integer.
ພຶດຕິກຳການຈັບຄູ່ເລີ່ມຕົ້ນ, ເມື່ອຕົວເລືອກນີ້ບໍ່ຖືກຕັ້ງ, ແມ່ນການຈັບຄູ່ຖັນທັງສອງ
ມີຄໍານິຍາມພິເສດແລະບໍ່ມີ.
ນີ້ຫມາຍຄວາມວ່າຖ້າທ່ານຕ້ອງການປະຕິບັດກົດລະບຽບການສົ່ງສັນຍານທີ່ເປົ້າຫມາຍທັງສອງ serial or
integer ຈາກ ຂະຫນາດນ້ອຍ ຄໍານິຍາມຂຶ້ນຢູ່ກັບ auto_increment ນ້ອຍພິເສດຂອງ
ຂໍ້ມູນຈາກ MySQL, ຫຼັງຈາກນັ້ນທ່ານຈໍາເປັນຕ້ອງສະກົດສອງກົດລະບຽບການສົ່ງສັນຍານດັ່ງຕໍ່ໄປນີ້:
ພິມ smallint ດ້ວຍການເພີ່ມ auto_increment
ເພື່ອ serial drop typemod ຮັກສາໄວ້ໃນຕອນຕົ້ນບໍ່ໃຫ້ null,
ພິມນ້ອຍ
to integer drop typemod ຮັກສາໄວ້ໃນຕອນຕົ້ນບໍ່ໃຫ້ null
ທາງເລືອກການສາຍສະຫນັບສະຫນູນແມ່ນ:
· ວາງ Default, ຮັກສາ Default
ໃນເວລາທີ່ທາງເລືອກ ວາງ Default ຖືກລະບຸໄວ້, pgloader ຫຼຸດລົງການສະແດງອອກເລີ່ມຕົ້ນທີ່ມີຢູ່ແລ້ວ
ໃນຖານຂໍ້ມູນ MySQL ສໍາລັບຄໍລໍາຂອງປະເພດແຫຼ່ງຈາກ ສ້າງ ຕາຕະລາງ ຄໍາຖະແຫຼງທີ່
ມັນສ້າງ.
ການສະກົດຄໍາ ຮັກສາ Default ປ້ອງກັນພຶດຕິກຳນັ້ນຢ່າງຈະແຈ້ງ ແລະສາມາດນຳໃຊ້ໄດ້
overload ກົດລະບຽບການຄາສທ໌ເລີ່ມຕົ້ນ.
· ວາງ ບໍ່ null, ຮັກສາ ບໍ່ null
ໃນເວລາທີ່ທາງເລືອກ ວາງ ບໍ່ null ຖືກລະບຸໄວ້, pgloader ຫຼຸດລົງໃດໆທີ່ມີຢູ່ ບໍ່ NULL
ຂໍ້ຈໍາກັດທີ່ກ່ຽວຂ້ອງກັບແຫຼ່ງ MySQL datatype ເມື່ອມັນສ້າງຕາຕະລາງ
ໃນຖານຂໍ້ມູນ PostgreSQL.
ການສະກົດຄໍາ ຮັກສາ ບໍ່ null ປ້ອງກັນພຶດຕິກຳນັ້ນຢ່າງຈະແຈ້ງ ແລະສາມາດນຳໃຊ້ໄດ້
overload ກົດລະບຽບການຄາສທ໌ເລີ່ມຕົ້ນ.
· ວາງ typemod, ຮັກສາ typemod
ໃນເວລາທີ່ທາງເລືອກ ວາງ typemod ຖືກລະບຸໄວ້, pgloader ຫຼຸດລົງໃດໆທີ່ມີຢູ່ typemod ຄໍານິຍາມ
(ຕົວຢ່າງ ຄວາມຖືກຕ້ອງ ແລະ ຂະຫນາດ) ຈາກຄໍານິຍາມປະເພດຂໍ້ມູນທີ່ພົບເຫັນຢູ່ໃນຖັນ MySQL ຂອງ
ປະເພດແຫຼ່ງໃນເວລາທີ່ມັນສ້າງຕາຕະລາງໃນຖານຂໍ້ມູນ PostgreSQL.
ການສະກົດຄໍາ ຮັກສາ typemod ປ້ອງກັນພຶດຕິກຳນັ້ນຢ່າງຈະແຈ້ງ ແລະສາມາດນຳໃຊ້ໄດ້
overload ກົດລະບຽບການຄາສທ໌ເລີ່ມຕົ້ນ.
· ການນໍາໃຊ້
ຕົວເລືອກນີ້ໃຊ້ເວລາເປັນການໂຕ້ຖຽງດຽວຂອງມັນ ຊື່ຂອງຟັງຊັນທີ່ຈະພົບເຫັນຢູ່ໃນ
pgloader.transforms ຊຸດ Lisp ທົ່ວໄປ. ເບິ່ງຂ້າງເທິງສໍາລັບລາຍລະອຽດ.
ມັນເປັນໄປໄດ້ທີ່ຈະເພີ່ມກົດລະບຽບການຄາສທເລີ່ມຕົ້ນ (ເຊັ່ນ: ອັນທີ່ນໍາໃຊ້ກັບ ENUM
ປະເພດຂໍ້ມູນຕົວຢ່າງ) ກັບ a ການຫັນເປັນ ຫນ້າທີ່ ໂດຍການຍົກເວັ້ນທັງຫມົດ ປະເພດ
ພາກສ່ວນຂອງກົດລະບຽບການຫລໍ່, ໃນຕົວຢ່າງຕໍ່ໄປນີ້:
ຖັນ enumerate.foo ໂດຍໃຊ້ string-to-null
· ວັດສະດຸ VIEWS
ຂໍ້ນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດປະຕິບັດການປະມວນຜົນຂໍ້ມູນແບບກຳນົດເອງຢູ່ທີ່ແຫຼ່ງຂໍ້ມູນໂດຍ
ການສະຫນອງເປັນ ເບິ່ງ ຄໍານິຍາມ ທີ່ pgloader ຈະສອບຖາມຂໍ້ມູນ. ມັນບໍ່ແມ່ນ
ເປັນໄປໄດ້ພຽງແຕ່ອະນຸຍາດໃຫ້ສໍາລັບການທໍາມະດາ SQL ເນື່ອງຈາກວ່າພວກເຮົາຕ້ອງການຮູ້ຫຼາຍກ່ຽວກັບແນ່ນອນ
ປະເພດຂອງຂໍ້ມູນຂອງແຕ່ລະຄໍລໍາທີ່ກ່ຽວຂ້ອງກັບຜົນໄດ້ຮັບການສອບຖາມ.
ປະໂຫຍກນີ້ຄາດຫວັງວ່າຈະມີບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຄໍານິຍາມການເບິ່ງ, ແຕ່ລະອັນຈະເປັນອັນໃດນຶ່ງ
ຊື່ຂອງມຸມເບິ່ງທີ່ມີຢູ່ແລ້ວໃນຖານຂໍ້ມູນຂອງເຈົ້າຫຼືສະແດງອອກຕໍ່ໄປນີ້:
ຊື່ AS $$ sql query $$
ໄດ້ ຊື່ ແລະ sql query ຈະຖືກນໍາໃຊ້ໃນ a ສ້າງ VIEW ຖະແຫຼງການໃນຕອນຕົ້ນຂອງ
ການໂຫຼດຂໍ້ມູນ, ແລະມຸມເບິ່ງຜົນໄດ້ຮັບຈະຖືກຫຼຸດລົງໃນຕອນທ້າຍຂອງຂໍ້ມູນ
ການໂຫຼດ.
· ວັດສະດຸ ທັງຫມົດ VIEWS
ພຶດຕິກໍາດຽວກັນກັບ ວັດສະດຸ VIEWS ການນໍາໃຊ້ບັນຊີລາຍການແບບເຄື່ອນໄຫວຂອງການເບິ່ງທີ່ສົ່ງຄືນໂດຍ
MySQL ແທນທີ່ຈະຂໍໃຫ້ຜູ້ໃຊ້ລະບຸລາຍຊື່.
· ລວມເຂົ້າ ເທົ່ານັ້ນ ຕາຕະລາງ ຊື່ ການສົນທະນາ
ແນະນໍາບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຊື່ຕາຕະລາງ ຫຼື ປົກກະຕິ ການສະແດງອອກ ໃຊ້ເພື່ອຈໍາກັດ
ຕາຕະລາງເພື່ອຍ້າຍໄປຫາບັນຊີລາຍຊື່ຍ່ອຍ.
ຕົວຢ່າງ:
ລວມທັງການຈັບຄູ່ຊື່ຕາຕະລາງເທົ່ານັ້ນ ~/ຮູບເງົາ/, 'ນັກສະແດງ'
· ຍົກເວັ້ນ ຕາຕະລາງ ຊື່ ການສົນທະນາ
ແນະນໍາບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຊື່ຕາຕະລາງ ຫຼື ປົກກະຕິ ການສະແດງອອກ ໃຊ້ເພື່ອຍົກເວັ້ນ
ຊື່ຕາຕະລາງຈາກການເຄື່ອນຍ້າຍ. ການກັ່ນຕອງນີ້ພຽງແຕ່ນໍາໃຊ້ກັບຜົນໄດ້ຮັບຂອງ
ລວມເຂົ້າ ຕົວກອງ
ບໍ່ລວມເອົາຊື່ຕາຕະລາງທີ່ກົງກັນ ~
· ຖອດລະຫັດ ຕາຕະລາງ ຊື່ ການສົນທະນາ
ແນະນໍາບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຊື່ຕາຕະລາງ ຫຼື ປົກກະຕິ expressions ໃຊ້ເພື່ອບັງຄັບ
ການເຂົ້າລະຫັດທີ່ຈະໃຊ້ໃນເວລາປະມວນຜົນຂໍ້ມູນຈາກ MySQL. ຖ້າການເຂົ້າລະຫັດຂໍ້ມູນທີ່ທ່ານຮູ້ຈັກ
ມັນແຕກຕ່າງຈາກຄວາມຄິດຂອງ MySQL ກ່ຽວກັບມັນ, ນີ້ແມ່ນທາງເລືອກທີ່ຈະໃຊ້.
ການຖອດລະຫັດຊື່ຕາຕະລາງທີ່ກົງກັນ ~/messed/, ~/ການເຂົ້າລະຫັດ/ ເປັນ utf8
ທ່ານສາມາດນໍາໃຊ້ກົດລະບຽບດັ່ງກ່າວຫຼາຍເທົ່າທີ່ທ່ານຕ້ອງການ, ທັງຫມົດທີ່ອາດຈະມີການເຂົ້າລະຫັດທີ່ແຕກຕ່າງກັນ.
ຂອບເຂດ ຈຳ ກັດ
ໄດ້ ຖານຂໍ້ມູນ ຄໍາສັ່ງປະຈຸບັນສະຫນັບສະຫນູນພຽງແຕ່ຖານຂໍ້ມູນແຫຼ່ງ MySQL ແລະມີດັ່ງຕໍ່ໄປນີ້
ຂໍ້ຈໍາກັດ:
· Views ບໍ່ໄດ້ຖືກຍ້າຍ,
ການສະຫນັບສະຫນູນມຸມເບິ່ງອາດຈະຮຽກຮ້ອງໃຫ້ມີການປະຕິບັດຕົວວິເຄາະ SQL ເຕັມສໍາລັບພາສາ MySQL
ດ້ວຍເຄື່ອງຈັກ porting ເພື່ອຂຽນຄືນ SQL ຕໍ່ PostgreSQL, ລວມທັງການປ່ຽນຊື່
ຫນ້າທີ່ແລະການປ່ຽນແປງບາງໂຄງສ້າງ.
ໃນຂະນະທີ່ມັນເປັນໄປບໍ່ໄດ້ທາງທິດສະດີ, ຢ່າຖືລົມຫາຍໃຈຂອງເຈົ້າ.
· Triggers ບໍ່ໄດ້ຖືກຍົກຍ້າຍ
ຄວາມຫຍຸ້ງຍາກໃນການເຮັດແນວນັ້ນແມ່ນຍັງບໍ່ໄດ້ປະເມີນ.
· ON UPDATE CURRENT_TIMESTAMP ປະຈຸບັນບໍ່ໄດ້ຍ້າຍ
ມັນງ່າຍດາຍພຽງພໍທີ່ຈະປະຕິບັດ, ພຽງແຕ່ບໍ່ໄດ້ຢູ່ໃນບັນຊີລາຍຊື່ບູລິມະສິດເທື່ອ.
· ຂອງປະເພດຂໍ້ມູນເລຂາຄະນິດ, ມີພຽງແຕ່ ຈຸດປະສົງ ຖານຂໍ້ມູນໄດ້ຮັບການຄຸ້ມຄອງ. ອື່ນໆ
ຄວນຈະງ່າຍພໍທີ່ຈະປະຕິບັດໃນປັດຈຸບັນ, ມັນຍັງບໍ່ທັນເຮັດເທື່ອ.
ຄ່າເລີ່ມຕົ້ນ MySQL ຄະດີ ກົດລະບຽບ
ເມື່ອການເຄື່ອນຍ້າຍຈາກ MySQL ກົດລະບຽບການສົ່ງສັນຍານຕໍ່ໄປນີ້ແມ່ນສະຫນອງໃຫ້:
ຈໍານວນ:
·ພິມ int ດ້ວຍການເພີ່ມ auto_increment ເປັນ serial ເມື່ອ (< ຄວາມແມ່ນຍໍາ 10)
·ພິມ int ດ້ວຍການເພີ່ມ auto_increment ເປັນ bigserial ເມື່ອ (<= 10 ຄວາມແມ່ນຍໍາ)
·ພິມ int ເປັນ int ເມື່ອ (< ຄວາມແມ່ນຍໍາ 10)
·ພິມ int ກັບ bigint ເມື່ອ (<= 10 ຄວາມແມ່ນຍໍາ)
· ພິມ tinyint ດ້ວຍການເພີ່ມ auto_increment ເປັນ serial
· ພິມ smallint ດ້ວຍການເພີ່ມ auto_increment ເປັນ serial
· ພິມ mediaint ດ້ວຍການເພີ່ມ auto_increment ເປັນ serial
·ພິມ bigint ດ້ວຍການເພີ່ມ auto_increment ເປັນ bigserial
· ພິມ tinyint ກັບ boolean ເມື່ອ (= 1 precision) ໂດຍໃຊ້ tinyint-to-boolean
·ພິມ tinyint ກັບ smallint drop typemod
· ພິມ smallint ຫາ smallint drop typemod
· ພິມ mediumint ຫາ integer drop typemod
· ພິມ integer ກັບ integer drop typemod
·ພິມ float ກັບ float drop typemod
·ພິມ bigint ກັບ bigint drop typemod
· ພິມ double to double precision drop typemod
·ພິມຕົວເລກໄປຫາຕົວເລກຮັກສາ typemod
· ພິມເລກທົດສະນິຍົມຫາທົດສະນິຍົມຮັກສາ typemod
ບົດເລື່ອງ:
·ພິມ char ກັບ varchar ຮັກສາ typemod
·ພິມ varchar ເປັນຂໍ້ຄວາມ
·ພິມຂໍ້ຄວາມນ້ອຍໆໃສ່ຂໍ້ຄວາມ
·ພິມຂໍ້ຄວາມເປັນຂໍ້ຄວາມ
·ພິມຂໍ້ຄວາມປານກາງເປັນຂໍ້ຄວາມ
·ພິມ longtext ເປັນຂໍ້ຄວາມ
Binary:
·ພິມ binary ກັບ bytea
· ປະເພດ varbinary ກັບ bytea
·ພິມ tinyblob ເປັນ bytea
·ພິມ blob ເປັນ bytea
·ພິມ mediumblob ເປັນ bytea
·ພິມ longblob ເປັນ bytea
ວັນທີ່:
· ພິມ datetime ເມື່ອຄ່າເລີ່ມຕົ້ນ "0000-00-00 00:00:00" ແລະບໍ່ແມ່ນ null ກັບ timestamptz drop not
null drop ເລີ່ມຕົ້ນໂດຍໃຊ້ zero-dates-to-null
· ພິມ datetime ເມື່ອຄ່າເລີ່ມຕົ້ນ "0000-00-00 00:00:00" ເພື່ອ timestamptz drop default ໂດຍໃຊ້
zero-dates-to-null
· ພິມ timestamp ເມື່ອຄ່າເລີ່ມຕົ້ນ "0000-00-00 00:00:00" ແລະບໍ່ແມ່ນ null ກັບ timestamptz ຫຼຸດລົງ
null drop ເລີ່ມຕົ້ນໂດຍໃຊ້ zero-dates-to-null
· ພິມ timestamp ເມື່ອຄ່າເລີ່ມຕົ້ນ "0000-00-00 00:00:00" ເພື່ອ timestamptz ວາງໄວ້ໃນຕອນຕົ້ນໂດຍໃຊ້
zero-dates-to-null
· ພິມວັນທີເມື່ອຄ່າເລີ່ມຕົ້ນ "0000-00-00" ລົງວັນທີເລີ່ມຕົ້ນໂດຍໃຊ້ zero-dates-to-null
·ພິມວັນທີເຖິງວັນທີ
·ພິມ datetime ກັບ timestamptz
·ພິມ timestamp ກັບ timestamptz
· ປະເພດປີກັບການຫຼຸດລົງຈໍານວນເຕັມ typemod
ເລຂາຄະນິດ:
· ພິມຈຸດໄປຫາຈຸດໂດຍໃຊ້ pgloader.transforms::convert-mysql-point
ປະເພດ Enum ຖືກປະກາດໃນແຖວໃນ MySQL ແລະແຍກຕ່າງຫາກດ້ວຍ a ສ້າງ TYPE ຄໍາສັ່ງໃນ
PostgreSQL, ດັ່ງນັ້ນແຕ່ລະຖັນຂອງ Enum Type ຖືກປ່ຽນເປັນປະເພດທີ່ມີຊື່ຕາມຕາຕະລາງແລະ
ຊື່ຖັນທີ່ກໍານົດດ້ວຍປ້າຍຊື່ດຽວກັນຢູ່ໃນລໍາດັບດຽວກັນ.
ເມື່ອຄໍານິຍາມປະເພດແຫຼ່ງບໍ່ໄດ້ຖືກຈັບຄູ່ໃນກົດລະບຽບການສົ່ງສັນຍານເລີ່ມຕົ້ນຫຼືຢູ່ໃນ
ກົດລະບຽບການຫລໍ່ທີ່ສະຫນອງໃຫ້ຢູ່ໃນຄໍາສັ່ງ, ຫຼັງຈາກນັ້ນຊື່ປະເພດທີ່ມີ typemod ແມ່ນຖືກນໍາໃຊ້.
ນ້ໍາຫນັກ SQLite DATABASE
ຄໍາສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫຼດຂໍ້ມູນຈາກໄຟລ໌ SQLite. ການຄົ້ນພົບອັດຕະໂນມັດຂອງ
schema ແມ່ນສະຫນັບສະຫນູນ, ລວມທັງການສ້າງດັດສະນີ.
ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫຼດຖານຂໍ້ມູນ
ຈາກ sqlite:///Users/dim/Downloads/lastfm_tags.db
ເຂົ້າໄປໃນ postgresql:///tags
ມີການຫຼຸດລົງ, ສ້າງຕາຕະລາງ, ສ້າງດັດສະນີ, ປັບລໍາດັບໃຫມ່
ຕັ້ງ work_mem ເປັນ ´16MB´, maintenance_work_mem ເປັນ ´512 MB´;
ໄດ້ sqlite ຄໍາສັ່ງຍອມຮັບຂໍ້ແລະທາງເລືອກຕໍ່ໄປນີ້:
· ຈາກ
ເສັ້ນທາງ ຫຼື HTTP URL ໄປຫາໄຟລ໌ SQLite, ອາດຈະເປັນ .zip ຍື່ນ.
· ກັບ
ເມື່ອໂຫລດຈາກ ກ SQLite ຖານຂໍ້ມູນ, ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
ເມື່ອໂຫລດຈາກ ກ SQLite ຖານຂໍ້ມູນ, ທາງເລືອກຕໍ່ໄປນີ້ໄດ້ຮັບການສະຫນັບສະຫນູນ, ແລະ
Default ກັບ ຂໍ້ແມ່ນ: no ລຳ ຕົ້ນ, ສ້າງ ຕາຕະລາງ, ປະກອບດ້ວຍ ວາງ, ສ້າງ ດັດສະນີ,
reset ລໍາດັບ, ຕົວນ້ອຍ ຕົວລະບຸຕົວຕົນ, ການເຂົ້າລະຫັດ 'utf-8'.
· ປະກອບດ້ວຍ ວາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຫຼຸດລົງຕາຕະລາງທັງຫມົດໃນ PostgreSQL ເປົ້າຫມາຍ
ຖານຂໍ້ມູນທີ່ມີຊື່ປາກົດຢູ່ໃນຖານຂໍ້ມູນ SQLite. ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ນໍາໃຊ້
ຄໍາສັ່ງດຽວກັນຫຼາຍຄັ້ງຕິດຕໍ່ກັນຈົນກ່ວາທ່ານຄິດອອກທາງເລືອກທັງຫມົດ, ເລີ່ມຕົ້ນ
ອັດຕະໂນມັດຈາກສະພາບແວດລ້ອມທີ່ສະອາດ. ກະລຸນາສັງເກດວ່າ CASCADE ຖືກນໍາໃຊ້ເພື່ອຮັບປະກັນ
ຕາຕະລາງນັ້ນຖືກລຸດລົງເຖິງແມ່ນວ່າຈະມີກະແຈຕ່າງປະເທດຊີ້ໄປຫາພວກມັນ. ນີ້ແມ່ນ
ຊັດເຈນວ່າແມ່ນຫຍັງ ປະກອບດ້ວຍ ວາງ ມີຈຸດປະສົງເພື່ອເຮັດ: ຖິ້ມຕາຕະລາງເປົ້າຫມາຍທັງຫມົດແລະສ້າງໃຫມ່
ໃຫ້ເຂົາເຈົ້າ.
ການນໍາໃຊ້ທີ່ຍິ່ງໃຫຍ່ຈໍາເປັນຕ້ອງໄດ້ຮັບການດູແລ ປະກອບດ້ວຍ ວາງ, ຍ້ອນວ່າມັນຈະ cascade ກັບ ທັງຫມົດ
ວັດຖຸອ້າງອີງຕາຕະລາງເປົ້າຫມາຍ, ອາດຈະລວມທັງຕາຕະລາງອື່ນໆທີ່ບໍ່ແມ່ນ
ຖືກໂຫລດຈາກແຫຼ່ງ DB.
· ປະກອບດ້ວຍ no ວາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຈະບໍ່ປະກອບມີໃດໆ ຢຸດ ຖະແຫຼງການໃນເວລາໂຫຼດ
ຂໍ້ມູນ.
· ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກ ພະຍາຍາມ ຄໍາສັ່ງຕໍ່ແຕ່ລະຄົນ
ຕາຕະລາງ PostgreSQL ກ່ອນການໂຫຼດຂໍ້ມູນໃສ່ມັນ.
· no ລຳ ຕົ້ນ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ມີບັນຫາທີ່ບໍ່ມີ ພະຍາຍາມ ຄໍາສັ່ງ.
· ປິດການໃຊ້ວຽກ triggers
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ອອກເປັນ ອີກຕໍ່ໄປ ຕາຕະລາງ ... ພິການ ຕົວແທນ ທັງຫມົດ
ຄໍາສັ່ງຕໍ່ກັບຕາຕະລາງເປົ້າຫມາຍ PostgreSQL ກ່ອນທີ່ຈະຄັດລອກຂໍ້ມູນ, ຫຼັງຈາກນັ້ນຄໍາສັ່ງ
ອີກຕໍ່ໄປ ຕາຕະລາງ ... ເປີດ ຕົວແທນ ທັງຫມົດ ເມື່ອໄດ້ COPY ແມ່ນແລ້ວ.
ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ການໂຫຼດຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງກ່ອນທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ສົນໃຈ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ແລະຜູ້ໃຊ້ກໍານົດ triggers ແລະອາດຈະເຮັດໃຫ້ບໍ່ຖືກຕ້ອງ ຕ່າງປະເທດ ທີ່ສໍາຄັນ
ຂໍ້ຈໍາກັດ ເມື່ອຂໍ້ມູນຖືກໂຫລດ. ໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ.
· ສ້າງ ຕາຕະລາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ສ້າງຕາຕະລາງໂດຍໃຊ້ຂໍ້ມູນ meta ທີ່ພົບໃນ
ໄດ້ SQLite ໄຟລ໌, ເຊິ່ງຕ້ອງມີບັນຊີລາຍຊື່ຂອງຊ່ອງຂໍ້ມູນທີ່ມີປະເພດຂໍ້ມູນຂອງເຂົາເຈົ້າ. ມາດຕະຖານ
ການປ່ຽນປະເພດຂໍ້ມູນຈາກ DBF ເປັນ PostgreSQL ແມ່ນແລ້ວ.
· ສ້າງ no ຕາຕະລາງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຂ້າມການສ້າງຕາຕະລາງກ່ອນທີ່ຈະວາງຂໍ້ມູນ,
ຕາຕະລາງເປົ້າຫມາຍຕ້ອງມີຢູ່ແລ້ວ.
· ສ້າງ ດັດສະນີ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ໄດ້ຮັບຄໍານິຍາມຂອງດັດສະນີທັງຫມົດທີ່ພົບເຫັນຢູ່ໃນ
ຖານຂໍ້ມູນ SQLite ແລະສ້າງຊຸດດຽວກັນຂອງຄໍານິຍາມດັດສະນີຕໍ່ກັບ
ຖານຂໍ້ມູນ PostgreSQL.
· ສ້າງ no ດັດສະນີ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຈະຂ້າມການສ້າງດັດສະນີ.
· reset ລໍາດັບ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, ໃນຕອນທ້າຍຂອງການໂຫຼດຂໍ້ມູນແລະຫຼັງຈາກດັດສະນີມີ
ທັງຫມົດໄດ້ຖືກສ້າງຂື້ນ, pgloader ປັບລໍາດັບ PostgreSQL ທັງຫມົດທີ່ສ້າງເປັນປະຈຸບັນ
ຄ່າສູງສຸດຂອງຖັນທີ່ເຂົາເຈົ້າຕິດຢູ່.
· reset no ລໍາດັບ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຂ້າມການຕັ້ງລໍາດັບໃຫມ່ຫຼັງຈາກການໂຫຼດ.
ທາງເລືອກ ໂຄງ ພຽງແຕ່ ແລະ ຂໍ້ມູນ ພຽງແຕ່ ບໍ່ມີຜົນຕໍ່ທາງເລືອກນີ້.
· ໂຄງ ພຽງແຕ່
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້ pgloader ຈະຫຼີກລ່ຽງການຍ້າຍຂໍ້ມູນ. ຫມາຍເຫດ
ວ່າ schema ໃນສະພາບການນີ້ປະກອບມີດັດຊະນີໃນເວລາທີ່ທາງເລືອກ ສ້າງ ດັດສະນີ
ໄດ້ຖືກລະບຸໄວ້.
· ຂໍ້ມູນ ພຽງແຕ່
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້ pgloader ພຽງແຕ່ບັນຫາ COPY ຖະແຫຼງການ, ໂດຍບໍ່ມີການດໍາເນີນການໃດໆ
ການປຸງແຕ່ງອື່ນໆ.
· ການເຂົ້າລະຫັດ
ຕົວເລືອກນີ້ອະນຸຍາດໃຫ້ຄວບຄຸມການເຂົ້າລະຫັດເພື່ອວິເຄາະຂໍ້ມູນຂໍ້ຄວາມ SQLite.
ຄ່າເລີ່ມຕົ້ນເປັນ UTF-8.
· ສົ່ງສັນຍານ
ຂໍ້ກໍານົດການສົ່ງສັນຍານອະນຸຍາດໃຫ້ກໍານົດກົດລະບຽບການສົ່ງສັນຍານແບບກໍານົດເອງ, ບໍ່ວ່າຈະເປັນການໂຫຼດເກີນຄ່າເລີ່ມຕົ້ນ
ກົດລະບຽບການຄັດເລືອກຫຼືການປັບປຸງໃຫ້ເຂົາເຈົ້າມີກໍລະນີພິເສດ.
ກະລຸນາອ້າງອີງເຖິງ MySQL CAST clause ສໍາລັບລາຍລະອຽດ.
· ລວມເຂົ້າ ເທົ່ານັ້ນ ຕາຕະລາງ ຊື່ ການສົນທະນາ
ແນະນໍາບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຊື່ຕາຕະລາງ ຫຼື ປົກກະຕິ ການສະແດງອອກ ໃຊ້ເພື່ອຈໍາກັດ
ຕາຕະລາງເພື່ອຍ້າຍໄປຫາບັນຊີລາຍຊື່ຍ່ອຍ.
ຕົວຢ່າງ:
ລວມທັງການຈັບຄູ່ຊື່ຕາຕະລາງເທົ່ານັ້ນ ~/ຮູບເງົາ/, 'ນັກສະແດງ'
· ຍົກເວັ້ນ ຕາຕະລາງ ຊື່ ການສົນທະນາ
ແນະນໍາບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຊື່ຕາຕະລາງ ຫຼື ປົກກະຕິ ການສະແດງອອກ ໃຊ້ເພື່ອຍົກເວັ້ນ
ຊື່ຕາຕະລາງຈາກການເຄື່ອນຍ້າຍ. ການກັ່ນຕອງນີ້ພຽງແຕ່ນໍາໃຊ້ກັບຜົນໄດ້ຮັບຂອງ
ລວມເຂົ້າ ຕົວກອງ
ບໍ່ລວມເອົາຊື່ຕາຕະລາງທີ່ກົງກັນ ~
ຄ່າເລີ່ມຕົ້ນ SQLite ຄະດີ ກົດລະບຽບ
ເມື່ອການເຄື່ອນຍ້າຍຈາກ SQLite ກົດລະບຽບການສົ່ງສັນຍານຕໍ່ໄປນີ້ແມ່ນສະຫນອງໃຫ້:
ຈໍານວນ:
· ພິມ tinyint ຫາ ນ້ອຍ
· ພິມຈຳນວນເຕັມໄປເປັນ bigint
·ພິມ float ກັບ float ໂດຍໃຊ້ float-to-string
·ພິມຈິງກັບຈິງໂດຍໃຊ້ float-to-string
·ພິມສອງເທົ່າເຖິງຄວາມແມ່ນຍໍາສອງເທົ່າໂດຍໃຊ້ float-to-string
·ພິມຕົວເລກເປັນຕົວເລກໂດຍໃຊ້ float-to-string
ບົດເລື່ອງ:
· ພິມຕົວອັກສອນກັບການຫຼຸດລົງຂໍ້ຄວາມ typemod
· ພິມ varchar ກັບ text drop typemod
·ພິມ nvarchar ກັບ text drop typemod
·ພິມ char ກັບ text drop typemod
·ພິມ nchar ກັບ text drop typemod
·ພິມ nvarchar ກັບ text drop typemod
·ພິມ clob ກັບ text drop typemod
Binary:
·ພິມ blob ເປັນ bytea
ວັນທີ່:
·ພິມ datetime ກັບ timestamptz ໂດຍໃຊ້ sqlite-timestamp-to-timestamp
·ພິມ timestamp ກັບ timestamptz ໂດຍໃຊ້ sqlite-timestamp-to-timestamp
·ພິມ timestamptz ກັບ timestamptz ໂດຍໃຊ້ sqlite-timestamp-to-timestamp
ນ້ໍາຫນັກ MS SQL DATABASE
ຄໍາສັ່ງນີ້ສັ່ງໃຫ້ pgloader ໂຫຼດຂໍ້ມູນຈາກຖານຂໍ້ມູນ MS SQL. ການຄົ້ນພົບອັດຕະໂນມັດ
ຂອງ schema ແມ່ນສະຫນັບສະຫນູນ, ລວມທັງການສ້າງດັດສະນີ, ກຸນແຈຕົ້ນຕໍແລະຕ່າງປະເທດ
ຂໍ້ ຈຳ ກັດ.
ນີ້ແມ່ນຕົວຢ່າງ:
ໂຫຼດຖານຂໍ້ມູນ
ຈາກ mssql://user@host/dbname
ເຂົ້າໄປໃນ postgresql:///dbname
ລວມທັງພຽງແຕ່ຊື່ຕາຕະລາງເຊັ່ນ 'GlobalAccount' ໃນ schema 'dbo'
ຕັ້ງ work_mem ເປັນ '16MB', maintenance_work_mem ເປັນ '512 MB'
ກ່ອນການໂຫຼດເຮັດ $$ drop schema ຖ້າມີ dbo cascade; $$;
ໄດ້ mssql ຄໍາສັ່ງຍອມຮັບຂໍ້ແລະທາງເລືອກຕໍ່ໄປນີ້:
· ຈາກ
ສະຕຣິງການເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນ MS SQL ທີ່ມີຢູ່ແລ້ວທີ່ຟັງແລະຍິນດີຕ້ອນຮັບ
ການເຊື່ອມຕໍ່ TCP/IP ພາຍນອກ. ໃນຖານະເປັນ pgloader ໃນປັດຈຸບັນ piggybacks ກ່ຽວກັບຄົນຂັບ FreeTDS, ກັບ
ປ່ຽນພອດຂອງເຊີບເວີ ກະລຸນາສົ່ງອອກ TDSPORT environment variable
· ກັບ
ເມື່ອໂຫລດຈາກ ກ MS SQL ຖານຂໍ້ມູນ, ທາງເລືອກດຽວກັນກັບເວລາໂຫລດ a MySQL ຖານຂໍ້ມູນ
ໄດ້ຮັບການສະຫນັບສະຫນູນ. ກະລຸນາເບິ່ງພາກ MySQL. ທາງເລືອກຕໍ່ໄປນີ້ແມ່ນເພີ່ມ:
· ສ້າງ schemas
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ສ້າງ schemas ດຽວກັນທີ່ພົບເຫັນຢູ່ໃນ MS SQL
ຕົວຢ່າງ. ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ.
· ສ້າງ no schemas
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸໄວ້, pgloader ຫຼີກລ່ຽງການສ້າງ schemas ໃດໆ, ທ່ານ
ຈາກນັ້ນຕ້ອງຮັບປະກັນວ່າ schema ເປົ້າຫມາຍມີຢູ່.
· ສົ່ງສັນຍານ
ຂໍ້ກໍານົດການສົ່ງສັນຍານອະນຸຍາດໃຫ້ກໍານົດກົດລະບຽບການສົ່ງສັນຍານແບບກໍານົດເອງ, ບໍ່ວ່າຈະເປັນການໂຫຼດເກີນຄ່າເລີ່ມຕົ້ນ
ກົດລະບຽບການຄັດເລືອກຫຼືການປັບປຸງໃຫ້ເຂົາເຈົ້າມີກໍລະນີພິເສດ.
ກະລຸນາອ້າງອີງເຖິງ MySQL CAST clause ສໍາລັບລາຍລະອຽດ.
· ລວມເຂົ້າ ເທົ່ານັ້ນ ຕາຕະລາງ ຊື່ ເຊັ່ນດຽວກັນກັບ ´...´ [, ´...´] IN scheMA ´...´
ແນະນຳລາຍການທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຮູບແບບຊື່ຕາຕະລາງທີ່ໃຊ້ເພື່ອຈຳກັດຕາຕະລາງໃຫ້
ຍ້າຍໄປຫາບັນຊີລາຍຊື່ຍ່ອຍ. ຫຼາຍກວ່າຫນຶ່ງຂໍ້ດັ່ງກ່າວອາດຈະຖືກນໍາໃຊ້, ພວກມັນຈະຖືກສະສົມ
ຮ່ວມກັນ.
ຕົວຢ່າງ:
ລວມທັງພຽງແຕ່ຊື່ຕາຕະລາງ lile 'GlobalAccount' ໃນ schema 'dbo'
· ຍົກເວັ້ນ ຕາຕະລາງ ຊື່ ເຊັ່ນດຽວກັນກັບ ´...´ [, ´...´] IN scheMA ´...´
ແນະນຳລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຮູບແບບຊື່ຕາຕະລາງທີ່ໃຊ້ເພື່ອຍົກເວັ້ນຊື່ຕາຕະລາງ
ຈາກການເຄື່ອນຍ້າຍ. ການກັ່ນຕອງນີ້ໃຊ້ກັບຜົນໄດ້ຮັບຂອງ ລວມເຂົ້າ ຕົວກອງ
ບໍ່ລວມເອົາຊື່ຕາຕະລາງທີ່ກົງກັນ 'ບັນຊີທ້ອງຖິ່ນ' ໃນ schema 'dbo'
ຄ່າເລີ່ມຕົ້ນ MS SQL ຄະດີ ກົດລະບຽບ
ເມື່ອການເຄື່ອນຍ້າຍຈາກ MS SQL ກົດລະບຽບການສົ່ງສັນຍານຕໍ່ໄປນີ້ແມ່ນສະຫນອງໃຫ້:
ຈໍານວນ:
· ພິມ tinyint ຫາ ນ້ອຍ
·ພິມ float ກັບ float ໂດຍໃຊ້ float-to-string
·ພິມຈິງກັບຈິງໂດຍໃຊ້ float-to-string
·ພິມສອງເທົ່າເຖິງຄວາມແມ່ນຍໍາສອງເທົ່າໂດຍໃຊ້ float-to-string
·ພິມຕົວເລກເປັນຕົວເລກໂດຍໃຊ້ float-to-string
· ພິມເລກທົດສະນິຍົມເປັນຕົວເລກໂດຍໃຊ້ float-to-string
·ພິມເງິນເປັນຕົວເລກໂດຍໃຊ້ float-to-string
·ພິມເງິນນ້ອຍເປັນຕົວເລກໂດຍໃຊ້ float-to-string
ບົດເລື່ອງ:
·ພິມ char ກັບ text drop typemod
·ພິມ nchat ກັບ text drop typemod
· ພິມ varchar ກັບ text drop typemod
·ພິມ nvarchar ກັບ text drop typemod
·ພິມ xml ກັບ text drop typemod
Binary:
·ພິມ binary ກັບ bytea ໂດຍໃຊ້ byte-vector-to-bytea
· ພິມ varbinary ກັບ bytea ໂດຍໃຊ້ byte-vector-to-bytea
ວັນທີ່:
·ພິມ datetime ກັບ timestamptz
·ພິມ datetime2 ກັບ timestamptz
ຄົນອື່ນ:
·ພິມ bit ເປັນ boolean
·ພິມ hierarchyid ເປັນ bytea
· ປະເພດພູມສາດເປັນ bytea
·ພິມ uniqueidentifier ກັບ uuid ໂດຍໃຊ້ sql-server-uniqueidentifier-to-uuid
ການແປພາສາ FUNCTIONS
ບາງປະເພດຂໍ້ມູນຖືກປະຕິບັດໃນວິທີທີ່ແຕກຕ່າງກັນພຽງພໍທີ່ຫນ້າທີ່ການຫັນປ່ຽນ
ເປັນສິ່ງຈໍາເປັນ. ຟັງຊັນນີ້ຕ້ອງຖືກຂຽນໄວ້ໃນ ສາມັນ ລາຍການ ແລະຖືກຄົ້ນຫາຢູ່ໃນ
pgloader.transforms package
ບາງຟັງຊັນການຫັນປ່ຽນໃນຕອນຕົ້ນແມ່ນສະຫນອງໃຫ້ກັບ pgloader, ແລະທ່ານສາມາດນໍາໃຊ້ໄດ້
-- ໂຫຼດ ທາງເລືອກແຖວຄໍາສັ່ງທີ່ຈະໂຫລດແລະລວບລວມໄຟລ໌ lisp ຂອງທ່ານເອງເຂົ້າໄປໃນ pgloader ຢູ່
ເວລາແລ່ນ. ສໍາລັບຫນ້າທີ່ຂອງທ່ານທີ່ຈະພົບເຫັນ, ຈື່ໄວ້ເພື່ອເລີ່ມຕົ້ນໄຟລ໌ lisp ຂອງທ່ານກັບ
ແບບຟອມຕໍ່ໄປນີ້:
(in-package #:pgloader.transforms)
ຫນ້າທີ່ການຫັນປ່ຽນສະຫນອງໃຫ້ແມ່ນ:
· zero-dates-to-null
ເມື່ອວັນທີປ້ອນຂໍ້ມູນແມ່ນສູນທັງໝົດ, ໃຫ້ກັບຄືນ nil, ເຊິ່ງໄດ້ຮັບການໂຫຼດເປັນ PostgreSQL NULL
ມູນຄ່າ.
· date-with-no-separator
ໃຊ້ໄດ້ zero-dates-to-null ຈາກນັ້ນປ່ຽນວັນທີທີ່ໃຫ້ໄປເປັນຮູບແບບທີ່ PostgreSQL
ຕົວຈິງແລ້ວຈະດໍາເນີນການ:
ໃນ: "20041002152952"
Out: "2004-10-02 15:29:52"
· time-with-no-separator
ປ່ຽນເວລາໃຫ້ເຂົ້າໄປໃນຮູບແບບທີ່ PostgreSQL ຕົວຈິງແລ້ວຈະປະມວນຜົນ:
ໃນ: "08231560"
ອອກ: "08:23:15.60"
· tinyint-to-boolean
ຍ້ອນວ່າ MySQL ຂາດປະເພດ boolean ທີ່ເຫມາະສົມ, ນ້ອຍ tiny ມັກຈະຖືກນໍາໃຊ້ເພື່ອປະຕິບັດມັນ. ນີ້
ການປ່ຽນແປງຫນ້າທີ່ 0 to 'ບໍ່ຖືກຕ້ອງ' ແລະສິ່ງອື່ນໃດ 'ຈິງ'.
· bits-to-boolean
ຍ້ອນວ່າ MySQL ຂາດປະເພດ boolean ທີ່ເຫມາະສົມ, BIT ມັກຈະຖືກນໍາໃຊ້ເພື່ອປະຕິບັດມັນ. ນີ້
ຟັງຊັນປ່ຽນ 1-bit vectors ຈາກ 0 to f ແລະມູນຄ່າອື່ນໆທີ່ຈະ t..
· int-to-ip
ປ່ຽນຈຳນວນເຕັມເປັນຕົວແທນຈຸດຂອງ ip4.
ໃນ: 18435761
ອອກ: "1.25.78.177"
· ip-range
ແປງສອງສາມຈຳນວນເຕັມທີ່ໃຫ້ເປັນສະຕຣິງເປັນຊ່ວງຂອງ ip4.
ໃນ: "16825344" "16825599"
ອອກ: "1.0.188.0-1.0.188.255"
· convert-mysql-ຈຸດ
ແປງຈາກ astext ການເປັນຕົວແທນຂອງຈຸດໃນ MySQL ກັບ PostgreSQL
ການເປັນຕົວແທນ.
ໃນ: "POINT(48.5513589 7.6926827)"
ອອກ: "(48.5513589,7.6926827)"
· float-to-string
ປ່ຽນການລອຍຕົວແບບ Lisp ທົ່ວໄປເປັນສະຕຣິງທີ່ເໝາະສົມກັບຕົວເລື່ອນ PostgreSQL:
ໃນ: 100.0d0
ອອກ: "100.0"
· set-to-enum-array
ປ່ຽນສະຕຣິງທີ່ເປັນຕົວແທນຂອງ MySQL SET ເປັນ PostgreSQL Array ຂອງຄ່າ Enum ຈາກ
ຊຸດ.
ໃນ: "foo,bar"
ອອກ: "{foo,bar}"
· empty-string-to-null
ປ່ຽນສະຕຣິງຫວ່າງເປົ່າເປັນ null.
· ຕັດຂວາ
ເອົາຊ່ອງຫວ່າງຢູ່ທ້າຍສະຕຣິງ.
· byte-vector-to-byte
ປ່ຽນອາເຣແບບງ່າຍໆຂອງໄບທີ່ບໍ່ໄດ້ເຊັນເປັນ PostgreSQL bytea Hex Format
ການເປັນຕົວແທນເປັນເອກະສານທີ່
http://www.postgresql.org/docs/9.3/interactive/datatype-binary.html
· sqlite-timestamp-to-timestamp
ລະບົບປະເພດ SQLite ແມ່ນຂ້ອນຂ້າງຫນ້າສົນໃຈ, ສະນັ້ນຮັບມືກັບມັນຢູ່ທີ່ນີ້ເພື່ອຜະລິດເວລາ
ຕົວອັກສອນຕາມທີ່ຄາດໄວ້ໂດຍ PostgreSQL. ທີ່ກວມເອົາປີພຽງແຕ່ 4 ຕົວເລກ, 0 ວັນທີ
null, ແລະສະຕຣິງວັນທີທີ່ຖືກຕ້ອງ.
· sql-server-uniqueidentifier-to-uuid
ໄດເວີ SQL Server ໄດ້ຮັບຂໍ້ມູນ fo type uniqueidentifier ເປັນ byte vector ທີ່ພວກເຮົາ
ຈາກນັ້ນຈໍາເປັນຕ້ອງໄດ້ປ່ຽນເປັນ UUID string ສໍາລັບຮູບແບບການປ້ອນຂໍ້ມູນ PostgreSQL COPY ເພື່ອປະມວນຜົນ.
· unix-timestamp-to-timestamptz
ແປງເວລາ unix (ຈໍານວນວິນາທີທີ່ຜ່ານໄປຕັ້ງແຕ່ຕົ້ນປີ 1970) ເປັນ
ຮູບແບບເວລາ PostgreSQL ທີ່ຖືກຕ້ອງ.
ນ້ໍາຫນັກ MESSAGES
ຄໍາສັ່ງນີ້ຍັງເປັນການທົດລອງແລະອະນຸຍາດໃຫ້ຮັບຂໍ້ຄວາມຜ່ານ UDP ໂດຍໃຊ້ syslog
ເຊັ່ນດຽວກັນກັບຮູບແບບ, ແລະ, ຂຶ້ນກັບການຈັບຄູ່ກົດລະບຽບ, ການໂຫຼດສ່ວນທີ່ມີຊື່ຂອງນ້ໍາຂໍ້ມູນເຂົ້າໄປໃນ
ຕາຕະລາງປາຍທາງ.
ໂຫຼດຂໍ້ຄວາມ
ຈາກ syslog://localhost:10514/
ເມື່ອກົງກັບ rsyslog-msg ໃນ apache
ການລົງທະບຽນເວລາ, ip, ສ່ວນທີ່ເຫຼືອ
ເຂົ້າໄປໃນ postgresql://localhost/db?logs.apache
SET guc_1 = ´value´, guc_2 = ´ຄ່າອື່ນໆ´
ເມື່ອກົງກັບ rsyslog-msg ຢູ່ໃນບ່ອນອື່ນ
ການລົງທະບຽນເວລາ, ຊື່ແອັບ, ຂໍ້ມູນ
ເຂົ້າໄປໃນ postgresql://localhost/db?logs.others
SET guc_1 = ´value´, guc_2 = ´ຄ່າອື່ນໆ´
ດ້ວຍ apache = rsyslog
DATA = IP REST
IP = 1*3DIGIT "." 1*3DIGIT "."."1*3DIGIT "."."1*3DIGIT
ພັກຜ່ອນ = ~ /.*/
ກັບຄົນອື່ນ = rsyslog;
ເນື່ອງຈາກຄໍາສັ່ງຍັງຢູ່ໃນການທົດລອງ, ທາງເລືອກອາດຈະມີການປ່ຽນແປງໃນອະນາຄົດແລະ
ລາຍລະອຽດບໍ່ໄດ້ບັນທຶກໄວ້.
ໃຊ້ pgloader ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net