หน้า 1 จากทั้งหมด 1

Odoo 9 import customer (CSV) ได้ทีละ 15 records

โพสต์แล้ว: ศุกร์ 10 มิ.ย. 2016 4:04 pm
โดย twinsen
ผมติดตั้ง Odoo 9 เสร็จแล้วก็ทำการทดลอง import ข้อมูล customer จากระบบเก่าดู

พบปัญหาว่า import ได้แค่คราวละ 15 record เท่านั้น ถ้าเกินกว่านั้นจะ error ตามข้างล่างครับ

ปัญหานี้แก้ไขอย่างไรครับ

โค้ด: เลือกทั้งหมด

2016-06-10 08:44:44,242 10431 ERROR odoo openerp.http: Exception during JSON
request handling.
Traceback (most recent call last):
  File "/odoo/odoo-server/openerp/http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/odoo/odoo-server/openerp/http.py", line 680, in dispatch
    result = self._call_function(**self.params)
  File "/odoo/odoo-server/openerp/http.py", line 316, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/odoo/odoo-server/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/odoo/odoo-server/openerp/http.py", line 309, in checked_call
    result = self.endpoint(*a, **kw)
  File "/odoo/odoo-server/openerp/http.py", line 959, in __call__
    return self.method(*args, **kw)
  File "/odoo/odoo-server/openerp/http.py", line 509, in response_wrap
    response = f(*args, **kw)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 896, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 888, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/addons/base_import/models.py", line 452, in do
    record, fields, options, context=context)
  File "/odoo/odoo-server/addons/base_import/models.py", line 419, in _convert_import_data
    row for row in itertools.imap(mapper, rows_to_import)
IndexError: list index out of range

Re: Odoo 9 import customer (CSV) ได้ทีละ 15 records

โพสต์แล้ว: เสาร์ 11 มิ.ย. 2016 3:01 pm
โดย kitcle
การ นำเข้า - ส่งออก CSV ผ่าน odoo โดยตรง ยังมีข้อเสียเปรียบ
คือ ชื่อ ฟิลด์ ข้อมุลต่างๆ มันยึกยือ ภาษต่างดาว หรือแม้แต่ตัว key value ก็มนุษย์อ่านไม่เข้าใจ


ส่วนใหญ่ นักพัฒนา เขาไม่ใช่ นำเข้า- ส่งออกข้อมุลทางนี้ครับ
ผมก็จะใช้วิธี export ผ่าน postgresql เลย

Export Code

โค้ด: เลือกทั้งหมด

Copy (select id,
  name ,
  code ,
  is_company
 from res_partner) To '/tmp/rp.csv' With CSV HEADER;


พอได้ csv ที่ปลายทาง ก็ นำเข้ามาใช้ใหม่ได้
แถมสามารถเขียน query sql ทำไรเยอะแยะก่อน นำออก นำเข้า

Import Code

โค้ด: เลือกทั้งหมด

COPY res_partner(id ,name ,code, is_company )
FROM ''/tmp/rp.csv'
WITH DELIMITER ','
CSV HEADER

Re: Odoo 9 import customer (CSV) ได้ทีละ 15 records

โพสต์แล้ว: จันทร์ 13 มิ.ย. 2016 9:41 am
โดย twinsen
ที่ยกตัวอย่างมาคือภาษา Python ใช่มั้ยครับ ผมยังไม่ได้เริ่มศึกษาเรื่องใช้ Python กับ Odoo เลยครับ

ส่วนปัญหาเรื่องภาษาอ่านไม่ออก พอดีข้อมูลในระบบเก่า มีแต่ภาษาอังกฤษครับ เท่าที่ทดลอง import มาแล้ว ยังไม่เจอปัญหา แต่ก็ถือว่าเป็นข้อมูลที่เป็นประโยชน์ครับ

ตอนนี้ผมใช้วิธีตัดข้อมูลทีละ 15 record แล้วทะยอย import เอาครับ ข้อมูลเยอะมาก ยังไม่เสร็จเลยครับ :-|

ขอบคุณครับ

Re: Odoo 9 import customer (CSV) ได้ทีละ 15 records

โพสต์แล้ว: จันทร์ 13 มิ.ย. 2016 11:23 am
โดย ntnw
บางทีถ้ายังไม่ได้ศึกษาตัว table เลย การ import ผ่าน หน้า Client ก็ดีครับ จะไม่เจอ ปัญหาเรื่อง Table ที่ Link กันอยู่

แต่ถ้ารู้จัก table ดีแล้ว ตาม อ.kitcle เลยครับสะดวกสุด

Re: Odoo 9 import customer (CSV) ได้ทีละ 15 records

โพสต์แล้ว: จันทร์ 13 มิ.ย. 2016 1:25 pm
โดย chaiyapon
twinsen เขียน:ผมติดตั้ง Odoo 9 เสร็จแล้วก็ทำการทดลอง import ข้อมูล customer จากระบบเก่าดู

พบปัญหาว่า import ได้แค่คราวละ 15 record เท่านั้น ถ้าเกินกว่านั้นจะ error ตามข้างล่างครับ

ปัญหานี้แก้ไขอย่างไรครับ

โค้ด: เลือกทั้งหมด

2016-06-10 08:44:44,242 10431 ERROR odoo openerp.http: Exception during JSON
request handling.
Traceback (most recent call last):
  File "/odoo/odoo-server/openerp/http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/odoo/odoo-server/openerp/http.py", line 680, in dispatch
    result = self._call_function(**self.params)
  File "/odoo/odoo-server/openerp/http.py", line 316, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/odoo/odoo-server/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/odoo/odoo-server/openerp/http.py", line 309, in checked_call
    result = self.endpoint(*a, **kw)
  File "/odoo/odoo-server/openerp/http.py", line 959, in __call__
    return self.method(*args, **kw)
  File "/odoo/odoo-server/openerp/http.py", line 509, in response_wrap
    response = f(*args, **kw)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 896, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 888, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/addons/base_import/models.py", line 452, in do
    record, fields, options, context=context)
  File "/odoo/odoo-server/addons/base_import/models.py", line 419, in _convert_import_data
    row for row in itertools.imap(mapper, rows_to_import)
IndexError: list index out of range

ตัว csv เป็นตัวที่ Export ออกมาจาก odoo หรือเปล่าครับ ถ้าไม่ใช่ ก็ลอง export ออกมาจาก odoo ดูนะครับ แล้วก็ที่ส่งสัยคือ csv Formate แถวที่ 16 เหมือนเพื่อนหรือเปล่า เพราะที่ผมเคยทำนำเขาที่ละเยอะๆได้ครับ ลองดูนะครับ

Re: Odoo 9 import customer (CSV) ได้ทีละ 15 records

โพสต์แล้ว: จันทร์ 13 มิ.ย. 2016 1:47 pm
โดย twinsen
csv นั่นผม export มาจากระบบอื่นที่ไม่ใช่ Odoo ครับ เขียน sql ดึงมาใส่ excel อีกที

ตอนจะเอาเข้า Odoo ผมนำเข้าผ่านหน้า Contacts >> Imports ครับ (เพราะตอนนี้ยังรู้จัก Odoo แค่แบบผิวเผิน เลยทำได้แค่นี้)

format ของแถวที่ 16 จะเหมือนกับเพื่อนๆ ละครับ เพราะที่มาของข้อมูลคือดึงจาก sql และถ้าผมตัดแถวที่ 1-15 ออก แถวที่ 16 ที่เลื่อนมาเป็นแถวที่ 1 และอีก 14 แถวถัดมา ก็จะนำเข้าได้ปกติครับ เลยใช้วิธีตัดนำเข้าทีละ 15 records ตามที่ตอบไปก่อนนี้ครับ