Я пытаюсь вставить строки, используя raw sql в django:
Входной файл содержит 15 строк, которые «закомментированы» с помощью «#».
Остальная часть файлаявляется символом табуляции и завершается символом '\ n'.
Я пытаюсь игнорировать первые 15 строк, используя предложение IGNORE <#> LINES в моем операторе LOAD DATA INFILE.
, используя следующеекод:
def my_custom_sql():
from django.db import connection, transaction
cursor = connection.cursor()
statement = "LOAD DATA LOCAL INFILE '/home/dev/ttam/data/temp.ttam' INTO TABLE ttam_genotypeentry (snp_id, @dummy1, @dummy2, genotype) SET subject_id=%i IGNORE 15 LINES;" % subject.pk
cursor.execute(statement)
transaction.commit_unless_managed()
я получаю следующую ошибку:
DatabaseError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IGNORE 15 LINES' at line 1")
С оператором (удаление IGNORE 15 LINES):
statement = "LOAD DATA LOCAL INFILE '/home/dev/ttam/data/temp.ttam' INTO TABLE ttam_genotypeentry (snp_id, @dummy1, @dummy2, genotype) SET subject_id=%i;" % subject.pk
Я получаю эту ошибку:
IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`ttam_genotypeentry`, CONSTRAINT `snp_id_refs_rs_id_50bcd16b` FOREIGN KEY (`snp_id`) REFERENCES `ttam_snp` (`rs_id`))')
Если я вручную удаляю первые 15 строк входного файла, операция продолжается без проблем.
Я использую:
django: Django version 1.3 rc 1
mysql: Server version: 5.1.49-1ubuntu8.1 (Ubuntu)
Как игнорировать первые 15 строк моего входного файла?