2016-03-25 17 views
0

Veri türü değişikliklerinden kaynaklanan veri kayıplarını önlemek için satırlarını tablo_2'ye eklemeden önce tablo_1 'deki sütunları Visual Fox Pro 9 içine kaydırmak istiyorum. Bu iki seçeneği stackoverflow'taki diğer çözümlere göre denedim, ancak her iki komut girdisi için syntax error ileti alıyorum. name alanı, datatype = character(5) biçimindedir ve subdir alanından sonra olması gerekir. Bir tablodaki sütunları, satır ekleme işleminden önce başka bir tablonun biçimlendirmesiyle eşleşecek şekilde kaydırın

ALTER table "f:\csp" change COLUMN name name character(5) after subdir

ALTER table "f:\csp" modify COLUMN name character(5) after subdir

burada çözümleri dayanarak bu komutları teşebbüs: How to move columns in a MySQL table?

cevap

1

Sütun sırasını değiştirmek için gereken, asla ve asla bir şey yapmak için sütun sipariş güvenmek gerekir. Bundan başka bir tabloya eklemek için, istediğiniz sırayla sütunları seçmeniz yeterlidir (ve "insert ... select ...") durumunda sütun adlarının aynı olması gerekmemektedir. yani:

insert into table_2 (subdir, name) ; 
select subdir, name from table_1 

başka yolu da XBase gibi komutları kullanmaktır: Bu sonuncu durumda

select table_2 
append from table_1 

VFP sütun adlarını maç yapardı.

Sonuç olarak, sütun sıralamasına güvenmek tehlikelidir. Bunu gerçekten yapmak istiyorsan, hala bir çok şekilde yapabilirsin. Bunlardan biri, tüm verileri bir geçici tabloya seçmek, tabloyu istediğiniz sıraya göre yeniden oluşturmak ve geçici olarak doldurmaktır (referanslı bütünlük gibi mevcut bağımlılıklar varsa o kadar kolay olmayabilir) - ayrıca yeniden oluşturmanız gerekir dizinler).

+0

* .dbfs * 50'den fazla sütuna sahiptir; bu nedenle * yöntem 2 * çok iyidir. – sda

+0

Yöntem 2 çalışmayabilir çünkü 'join on' ve 'where' satırları eklemek için kullanmam gerekiyor. – sda

+0

Yöntem 2 hala çalışıyor. Bir imleç içinde bir seçim yapabilir ve "Ekle (dbf ('yourCrsor')) yöntemini kullanabilirsiniz. Yöntem 1 her zaman çalışır, 50 veya 254 sütun. –

İlgili konular